From 7cab6d308aac9a13f5073d1762dc12676367f3a7 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sat, 23 Feb 2013 15:25:47 +0100 Subject: [PATCH] Core/Vehicles: Make RemovePendingEventsForSeat iterating crashsafe --- src/server/game/Entities/Vehicle/Vehicle.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 924b52de04..20110a555c 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -744,12 +744,13 @@ void Vehicle::RemovePendingEvent(VehicleJoinEvent* e) void Vehicle::RemovePendingEventsForSeat(uint8 seatId) { - for (std::deque::iterator itr = _pendingJoinEvents.begin(); itr != _pendingJoinEvents.end(); ++itr) + for (std::deque::iterator itr = _pendingJoinEvents.begin(); itr != _pendingJoinEvents.end();) { + std::deque::iterator cur = itr++; if (uint8((*itr)->Seat->first) == seatId) { (*itr)->to_Abort = true; - _pendingJoinEvents.erase(itr); + _pendingJoinEvents.erase(cur); } } }