aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-09 17:58:04 -0600
committermegamage <none@none>2009-03-09 17:58:04 -0600
commita32382a5ec082b1363f616027ce5e33baddbea78 (patch)
treee735c5f5af5f93f093cc4751b27b8b02ecdba00a /src
parent3d3656297f5c3b387bb3d121cd0160692af0ad96 (diff)
[7425] Fixed crash in BattleGround::Update() Author: Triply
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/BattleGround.cpp11
-rw-r--r--src/shared/revision_nr.h2
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__