diff options
author | megamage <none@none> | 2009-03-02 16:46:43 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-03-02 16:46:43 -0600 |
commit | f503f320ad6db899cb966fadd5757c71d0c005b1 (patch) | |
tree | 40d138558f1662fbdef82da39a7a502032da5ce6 /src/game/BattleGroundMgr.cpp | |
parent | e73d01182f74110372655d29787dc73de6efedbc (diff) |
[7359] Fixed crash when removing battleground from BGFreeSlotQueue. Author: Triply
Fixed player will now drop a flag before he logs out, if he is in BG.
--HG--
branch : trunk
Diffstat (limited to 'src/game/BattleGroundMgr.cpp')
-rw-r--r-- | src/game/BattleGroundMgr.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/game/BattleGroundMgr.cpp b/src/game/BattleGroundMgr.cpp index 987cf4f6a0d..dbd02fad42a 100644 --- a/src/game/BattleGroundMgr.cpp +++ b/src/game/BattleGroundMgr.cpp @@ -646,8 +646,9 @@ void BattleGroundQueue::Update(BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLeve //battleground with free slot for player should be always in the beggining of the queue // maybe it would be better to create bgfreeslotqueue for each queue_id_based_on_level + bool continueAdding = true; BGFreeSlotQueueType::iterator itr, next; - for (itr = sBattleGroundMgr.BGFreeSlotQueue[bgTypeId].begin(); itr != sBattleGroundMgr.BGFreeSlotQueue[bgTypeId].end(); itr = next) + for (itr = sBattleGroundMgr.BGFreeSlotQueue[bgTypeId].begin(); continueAdding && itr != sBattleGroundMgr.BGFreeSlotQueue[bgTypeId].end(); itr = next) { next = itr; ++next; @@ -673,6 +674,8 @@ void BattleGroundQueue::Update(BattleGroundTypeId bgTypeId, BGQueueIdBasedOnLeve if( !bg->HasFreeSlots() ) { + if( next == sBattleGroundMgr.BGFreeSlotQueue[bgTypeId].end() ) + continueAdding = false; // remove BG from BGFreeSlotQueue bg->RemoveFromBGFreeSlotQueue(); } |