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/OutdoorPvP | |
parent | 5c5cb3e555da279b45ccff19b5ab4fc2656c75e2 (diff) |
Core/Maps: Fixed invalid iterator usage
Closes #14687
Diffstat (limited to 'src/server/game/OutdoorPvP')
-rw-r--r-- | src/server/game/OutdoorPvP/OutdoorPvP.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index 0343e92c506..117891140da 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -162,12 +162,14 @@ bool OPvPCapturePoint::DelCreature(uint32 type) } auto bounds = m_PvP->GetMap()->GetCreatureBySpawnIdStore().equal_range(spawnId); - for (auto itr = bounds.first; itr != bounds.second; ++itr) + for (auto itr = bounds.first; itr != bounds.second;) { + Creature* c = itr->second; + ++itr; // Don't save respawn time - itr->second->SetRespawnTime(0); - itr->second->RemoveCorpse(); - itr->second->AddObjectToRemoveList(); + c->SetRespawnTime(0); + c->RemoveCorpse(); + c->AddObjectToRemoveList(); } TC_LOG_DEBUG("outdoorpvp", "deleting opvp creature type %u", type); @@ -196,11 +198,13 @@ bool OPvPCapturePoint::DelObject(uint32 type) ObjectGuid::LowType spawnId = m_Objects[type]; auto bounds = m_PvP->GetMap()->GetGameObjectBySpawnIdStore().equal_range(spawnId); - for (auto itr = bounds.first; itr != bounds.second; ++itr) + for (auto itr = bounds.first; itr != bounds.second;) { + GameObject* go = itr->second; + ++itr; // Don't save respawn time - itr->second->SetRespawnTime(0); - itr->second->Delete(); + go->SetRespawnTime(0); + go->Delete(); } sObjectMgr->DeleteGOData(spawnId); |