From: James Turner Date: Wed, 17 Jul 2013 19:26:34 +0000 (+0100) Subject: Work-around for bug 1134, crash with flightplans. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=74e60df2957057f8b9027db21861cb52767ca5e6;p=flightgear.git Work-around for bug 1134, crash with flightplans. When the active waypoint is deleted, and we can't offset the waypoint, simply switch to the inactive waypoint. This is not ideal but avoids the crash. --- diff --git a/src/Navaids/FlightPlan.cxx b/src/Navaids/FlightPlan.cxx index 2087d5cc1..5b190e972 100644 --- a/src/Navaids/FlightPlan.cxx +++ b/src/Navaids/FlightPlan.cxx @@ -269,14 +269,24 @@ int FlightPlan::clearWayptsWithFlag(WayptFlag flag) ++count; } } - + // test if the current leg will be removed bool currentIsBeingCleared = false; - if (_currentIndex >= 0) { - currentIsBeingCleared = _legs[_currentIndex]->waypoint()->flag(flag); + Leg* curLeg = currentLeg(); + if (curLeg) { + currentIsBeingCleared = curLeg->waypoint()->flag(flag); } _currentIndex -= count; + + // if we're clearing the current waypoint, what shall we do with the + // index? there's various options, but safest is to select no waypoint + // and let the use re-activate. + // http://code.google.com/p/flightgear-bugs/issues/detail?id=1134 + if (currentIsBeingCleared) { + SG_LOG(SG_GENERAL, SG_INFO, "currentIsBeingCleared:" << currentIsBeingCleared); + _currentIndex = -1; + } // now delete and remove RemoveWithFlag rf(flag);