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.
This commit is contained in:
parent
63f19db028
commit
74e60df295
1 changed files with 13 additions and 3 deletions
|
@ -272,12 +272,22 @@ int FlightPlan::clearWayptsWithFlag(WayptFlag flag)
|
|||
|
||||
// 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);
|
||||
LegVec::iterator it = std::remove_if(_legs.begin(), _legs.end(), rf);
|
||||
|
|
Loading…
Reference in a new issue