]> git.mxchange.org Git - flightgear.git/commitdiff
Olaf Flebbe:
authorehofman <ehofman>
Mon, 19 Dec 2005 13:03:19 +0000 (13:03 +0000)
committerehofman <ehofman>
Mon, 19 Dec 2005 13:03:19 +0000 (13:03 +0000)
The prototype of update_metar_properties does not match overridden func.
trafficmgr: iterators below begin() and after end().
tower.cxx : iterator incrementing beyond end().

src/ATC/tower.cxx
src/Environment/fgclouds.cxx
src/Environment/fgclouds.hxx
src/Traffic/TrafficMgr.cxx

index 25801f5d63571c937ae841504f43388ee78bed28..4b8115df64fa45072cf76bedeea020dc96ff77d4 100644 (file)
@@ -1109,6 +1109,8 @@ void FGTower::CheckCircuitList(double dt) {
                        circuitListItr = circuitList.erase(circuitListItr);
                        if(circuitListItr == circuitList.end() ) {
                                circuitListItr = circuitList.begin();
+                               // avoid increment of circuitListItr (would increment to second element, or crash if no element left)
+                               return;
                        }
                }
                ++circuitListItr;
index f6c526403a3e310f960ff7862782e0071b35d951..75a9b6417a1ce74420bdba291a62e88107494692 100644 (file)
@@ -263,7 +263,7 @@ void FGClouds::buildMETAR(void) {
 
 // copy from FGMetarEnvironmentCtrl until better
 void
-FGClouds::update_metar_properties( FGMetar *m )
+FGClouds::update_metar_properties( const FGMetar *m )
 {
     int i;
     double d;
index e5840fbe1af3169406bbbfdac51d2e7bd5e2dc88..ae555b3631481e30f33554b8270d7685d86e9b0b 100644 (file)
@@ -51,7 +51,7 @@ private:
 
        void setLayer( int iLayer, float alt_m, const string& coverage, const string& layer_type );
 
-       void update_metar_properties( FGMetar *m );
+       void update_metar_properties( const FGMetar *m );
 
        void FGClouds::update_env_config ();
 
index 1e3b73a2ce8cc034f917e6790edd0e333e164fd9..3d7fe4d7974335e0d083a27162b061c08edcbc6f 100644 (file)
@@ -85,7 +85,6 @@ void FGTrafficManager::init()
        {
          currAircraft=scheduledAircraft.erase(currAircraft);
          //cerr << "Erasing " << currAircraft->getRegistration() << endl;
-         currAircraft--;
        }
       else 
        {
@@ -102,6 +101,8 @@ void FGTrafficManager::init()
 void FGTrafficManager::update(double something)
 {
   time_t now = time(NULL) + fgGetLong("/sim/time/warp");
+  if (scheduledAircraft.size() == 0)
+         return;
   if(currAircraft == scheduledAircraft.end())
     {
       //cerr << "resetting schedule " << endl;