aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-04-27 11:45:37 +0200
committerShauren <shauren.trinity@gmail.com>2013-04-27 11:45:37 +0200
commit1ce50f84425147a98b2bd9897fdc79ff58cf4560 (patch)
tree7a6a4f130f213adfec67ca065966de52f6c81d20 /src
parente89ea9338a31bdeba31296202b15d6506774929a (diff)
Core/OutdoorPvP: Fixed crash in capture point update when players leave the point
Closes #9722
Diffstat (limited to 'src')
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
index 93bf7edc7d5..684bc43ceaa 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
@@ -280,10 +280,17 @@ bool OPvPCapturePoint::Update(uint32 diff)
float radius = (float)m_capturePoint->GetGOInfo()->capturePoint.radius;
for (uint32 team = 0; team < 2; ++team)
- for (PlayerSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end(); ++itr)
- if (Player* player = ObjectAccessor::FindPlayer(*itr))
+ {
+ for (PlayerSet::iterator itr = m_activePlayers[team].begin(); itr != m_activePlayers[team].end();)
+ {
+ uint64 playerGuid = *itr;
+ ++itr;
+
+ if (Player* player = ObjectAccessor::FindPlayer(playerGuid))
if (!m_capturePoint->IsWithinDistInMap(player, radius) || !player->IsOutdoorPvPActive())
HandlePlayerLeave(player);
+ }
+ }
std::list<Player*> players;
Trinity::AnyPlayerInObjectRangeCheck checker(m_capturePoint, radius);