diff options
author | megamage <none@none> | 2009-03-09 17:58:04 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-03-09 17:58:04 -0600 |
commit | a32382a5ec082b1363f616027ce5e33baddbea78 (patch) | |
tree | e735c5f5af5f93f093cc4751b27b8b02ecdba00a /src | |
parent | 3d3656297f5c3b387bb3d121cd0160692af0ad96 (diff) |
[7425] Fixed crash in BattleGround::Update() Author: Triply
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/BattleGround.cpp | 11 | ||||
-rw-r--r-- | src/shared/revision_nr.h | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 98547970886..5d85a29ce3a 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -244,6 +244,7 @@ void BattleGround::Update(uint32 diff) { RemovePlayerAtLeave(itr->first, true, true);// remove player from BG m_OfflineQueue.pop_front(); // remove from offline queue + //do not use itr for anything, because it is erased in RemovePlayerAtLeave() } } } @@ -426,9 +427,15 @@ void BattleGround::Update(uint32 diff) m_EndTime += diff; if(m_EndTime >= TIME_TO_AUTOREMOVE) // 2 minutes { - for(BattleGroundPlayerMap::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr) + BattleGroundPlayerMap::iterator itr, next; + for(itr = m_Players.begin(); itr != m_Players.end(); itr = next) + { + next = itr; + ++next; + //itr is erased here! RemovePlayerAtLeave(itr->first, true, true);// remove player from BG - // do not change any battleground's private variables + // do not change any battleground's private variables + } } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 3c5eab9d398..b95fe701d19 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7424" + #define REVISION_NR "7425" #endif // __REVISION_NR_H__ |