aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/OutdoorPvP
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-05-14 00:04:49 +0200
committerShauren <shauren.trinity@gmail.com>2015-05-14 00:04:49 +0200
commitee1c1b97be4492ecabe8b15ea6323fc37e4eaa8c (patch)
tree8c1b930dd58096c5da8187d5abc3824806293121 /src/server/game/OutdoorPvP
parent5c5cb3e555da279b45ccff19b5ab4fc2656c75e2 (diff)
Core/Maps: Fixed invalid iterator usage
Closes #14687
Diffstat (limited to 'src/server/game/OutdoorPvP')
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.cpp18
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);