The most important part is that it fixes possible
memory corruption with that iterator decrement past the erase call.
This commit is contained in:
parent
6773bf9571
commit
04f7175fd0
1 changed files with 7 additions and 1 deletions
|
@ -2151,14 +2151,15 @@ void FGTower::RemovePlane(const string& ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = appList.erase(twrItr);
|
twrItr = appList.erase(twrItr);
|
||||||
appListItr = appList.begin();
|
appListItr = appList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(twrItr = depList.begin(); twrItr != depList.end(); twrItr++) {
|
for(twrItr = depList.begin(); twrItr != depList.end(); twrItr++) {
|
||||||
if((*twrItr)->plane.callsign == ID) {
|
if((*twrItr)->plane.callsign == ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = depList.erase(twrItr);
|
twrItr = depList.erase(twrItr);
|
||||||
twrItr--;
|
|
||||||
depListItr = depList.begin();
|
depListItr = depList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(twrItr = circuitList.begin(); twrItr != circuitList.end(); twrItr++) {
|
for(twrItr = circuitList.begin(); twrItr != circuitList.end(); twrItr++) {
|
||||||
|
@ -2166,6 +2167,7 @@ void FGTower::RemovePlane(const string& ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = circuitList.erase(twrItr);
|
twrItr = circuitList.erase(twrItr);
|
||||||
circuitListItr = circuitList.begin();
|
circuitListItr = circuitList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(twrItr = holdList.begin(); twrItr != holdList.end(); twrItr++) {
|
for(twrItr = holdList.begin(); twrItr != holdList.end(); twrItr++) {
|
||||||
|
@ -2173,6 +2175,7 @@ void FGTower::RemovePlane(const string& ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = holdList.erase(twrItr);
|
twrItr = holdList.erase(twrItr);
|
||||||
holdListItr = holdList.begin();
|
holdListItr = holdList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(twrItr = rwyList.begin(); twrItr != rwyList.end(); twrItr++) {
|
for(twrItr = rwyList.begin(); twrItr != rwyList.end(); twrItr++) {
|
||||||
|
@ -2180,6 +2183,7 @@ void FGTower::RemovePlane(const string& ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = rwyList.erase(twrItr);
|
twrItr = rwyList.erase(twrItr);
|
||||||
rwyListItr = rwyList.begin();
|
rwyListItr = rwyList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(twrItr = vacatedList.begin(); twrItr != vacatedList.end(); twrItr++) {
|
for(twrItr = vacatedList.begin(); twrItr != vacatedList.end(); twrItr++) {
|
||||||
|
@ -2187,6 +2191,7 @@ void FGTower::RemovePlane(const string& ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = vacatedList.erase(twrItr);
|
twrItr = vacatedList.erase(twrItr);
|
||||||
vacatedListItr = vacatedList.begin();
|
vacatedListItr = vacatedList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(twrItr = trafficList.begin(); twrItr != trafficList.end(); twrItr++) {
|
for(twrItr = trafficList.begin(); twrItr != trafficList.end(); twrItr++) {
|
||||||
|
@ -2194,6 +2199,7 @@ void FGTower::RemovePlane(const string& ID) {
|
||||||
t = *twrItr;
|
t = *twrItr;
|
||||||
twrItr = trafficList.erase(twrItr);
|
twrItr = trafficList.erase(twrItr);
|
||||||
trafficListItr = trafficList.begin();
|
trafficListItr = trafficList.begin();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// And finally, delete the record.
|
// And finally, delete the record.
|
||||||
|
|
Loading…
Add table
Reference in a new issue