From 1c8f8a2e1384d48c2bf5b97bab8f68b357c66ba1 Mon Sep 17 00:00:00 2001 From: Triply Date: Mon, 9 Mar 2009 15:10:01 +0100 Subject: [PATCH] [7425] Fixed crash in BattleGround::Update() Signed-off-by: Triply --- src/game/BattleGround.cpp | 11 +++++++++-- 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 fdda6ace6..c0cd15729 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -240,6 +240,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() } } } @@ -422,9 +423,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 3c5eab9d3..b95fe701d 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__