diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-05-14 00:04:49 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-05-14 00:04:49 +0200 |
commit | ee1c1b97be4492ecabe8b15ea6323fc37e4eaa8c (patch) | |
tree | 8c1b930dd58096c5da8187d5abc3824806293121 /src/server/game/Pools/PoolMgr.cpp | |
parent | 5c5cb3e555da279b45ccff19b5ab4fc2656c75e2 (diff) |
Core/Maps: Fixed invalid iterator usage
Closes #14687
Diffstat (limited to 'src/server/game/Pools/PoolMgr.cpp')
-rw-r--r-- | src/server/game/Pools/PoolMgr.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
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<Creature>::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<GameObject>::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(); + } } } } |