diff --git a/src/tracerestrict.cpp b/src/tracerestrict.cpp index 9b95b8fb3d..a2960006e7 100644 --- a/src/tracerestrict.cpp +++ b/src/tracerestrict.cpp @@ -1462,8 +1462,11 @@ void TraceRestrictSlot::DeIndex(VehicleID id) auto range = slot_vehicle_index.equal_range(id); for (auto it = range.first; it != range.second; ++it) { if (it->second == this->index) { + bool is_first_in_range = (it == range.first); + auto next = slot_vehicle_index.erase(it); - if (it == range.first && next == range.second) { + + if (is_first_in_range && next == range.second) { /* Only one item, which we've just erased, clear the vehicle flag */ ClrBit(Train::Get(id)->flags, VRF_HAVE_SLOT); }