From ee1c1b97be4492ecabe8b15ea6323fc37e4eaa8c Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 14 May 2015 00:04:49 +0200 Subject: Core/Maps: Fixed invalid iterator usage Closes #14687 --- src/server/game/Pools/PoolMgr.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/server/game/Pools/PoolMgr.cpp') diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index 15f378e138a..a82652d2f03 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -225,8 +225,12 @@ void PoolGroup::Despawn1Object(uint64 guid) if (!map->Instanceable()) { auto creatureBounds = map->GetCreatureBySpawnIdStore().equal_range(guid); - for (auto itr = creatureBounds.first; itr != creatureBounds.second; ++itr) - itr->second->AddObjectToRemoveList(); + for (auto itr = creatureBounds.first; itr != creatureBounds.second;) + { + Creature* creature = itr->second; + ++itr; + creature->AddObjectToRemoveList(); + } } } } @@ -243,8 +247,12 @@ void PoolGroup::Despawn1Object(uint64 guid) if (!map->Instanceable()) { auto gameobjectBounds = map->GetGameObjectBySpawnIdStore().equal_range(guid); - for (auto itr = gameobjectBounds.first; itr != gameobjectBounds.second; ++itr) - itr->second->AddObjectToRemoveList(); + for (auto itr = gameobjectBounds.first; itr != gameobjectBounds.second;) + { + GameObject* go = itr->second; + ++itr; + go->AddObjectToRemoveList(); + } } } } -- cgit v1.2.3