From 1346f394bed0fe5afc17f0e5270f2374761a4c7b Mon Sep 17 00:00:00 2001 From: derex Date: Sun, 9 Nov 2008 15:35:22 +0200 Subject: [PATCH] Fix auth login queue. --- src/game/World.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/game/World.cpp b/src/game/World.cpp index 11b95cf09..a3322cf27 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -198,13 +198,16 @@ World::AddSession_ (WorldSession* s) return; } - WorldSession* old = m_sessions[s->GetAccountId ()]; - m_sessions[s->GetAccountId ()] = s; - // if session already exist, prepare to it deleting at next world update // NOTE - KickPlayer() should be called on "old" in RemoveSession() - if (old) - m_kicked_sessions.insert (old); + { + SessionMap::const_iterator old = m_sessions.find(s->GetAccountId ()); + + if(old != m_sessions.end()) + m_kicked_sessions.insert (old->second); + } + + m_sessions[s->GetAccountId ()] = s; uint32 Sessions = GetActiveAndQueuedSessionCount (); uint32 pLimit = GetPlayerAmountLimit (); @@ -286,9 +289,7 @@ void World::RemoveQueuedPlayer(WorldSession* sess) { if(*iter==sess) { - Queue::iterator iter2 = iter; - ++iter; - m_QueuedPlayer.erase(iter2); + iter = m_QueuedPlayer.erase(iter); decrease_session = false; // removing queued session break; }