]> git.mxchange.org Git - flightgear.git/commitdiff
Fix a JSBSim crash on OSG-quit
authorJames Turner <zakalawe@mac.com>
Fri, 11 Dec 2015 18:49:32 +0000 (12:49 -0600)
committerJames Turner <zakalawe@mac.com>
Fri, 11 Dec 2015 18:49:32 +0000 (12:49 -0600)
(i.e Cmd-Q / window closing, not the normal FlightGear quit sequence)

src/AIModel/AIBase.cxx
src/FDM/JSBSim/JSBSim.cxx
src/FDM/JSBSim/JSBSim.hxx

index 51146e077ee64c6713e36df0724348809120ef79..339de5f27f17557dd42b435722d19b238b4b42e8 100644 (file)
@@ -235,7 +235,9 @@ FGAIBase::removeModel()
     }
     else
     {
-        SG_LOG(SG_AI, SG_ALERT, "AIBase: Could not unload model. Missing scenery manager!");
+        aip.clear();
+        _model = 0;
+        _modeldata = 0;
     }
 }
 
index dbce5df7223642b4a9efd2c15430396920321aa4..0ac6cfb280b3ee63993c361a61a16d7fad7e3b8e 100644 (file)
@@ -229,6 +229,8 @@ FGJSBsim::FGJSBsim( double dt )
     fgGetNode("/fdm/jsbsim/sim-time-sec", true)->alias( node );
 // end of sim-time-sec deprecation patch
 
+    terrain = fgGetNode("/sim/fdm/surface", true);
+
     fdmex->Setdt( dt );
 
     result = fdmex->LoadModel( aircraft_path.str(),
@@ -1352,8 +1354,6 @@ FGJSBsim::get_agl_ft(double t, const double pt[3], double alt_off,
   SGQuatd hlToEc = SGQuatd::fromLonLat(geodPt);
   *agl = dot(hlToEc.rotate(SGVec3d(0, 0, 1)), SGVec3d(contact) - SGVec3d(pt));
 
-  static SGPropertyNode_ptr terrain = fgGetNode("/sim/fdm/surface", true);
-
 #ifdef JSBSIM_USE_GROUNDREACTIONS
   bool terrain_active = (terrain->getIntValue("override-level", -1) > 0) ? false : true;
   terrain->setBoolValue("active", terrain_active);
index accce23869aa1cd3fae0cf746571b6413b86aab8..d6c3c6ab97b78d0dd1ef6896ccefb0a31105e14b 100644 (file)
@@ -288,6 +288,8 @@ private:
 
     SGPropertyNode_ptr slaved;
 
+    SGPropertyNode_ptr terrain;
+
     static std::map<std::string,int> TURBULENCE_TYPE_NAMES;
 
     double last_hook_tip[3];