From 96eb74992e644d0a7cffa233e16024fe0bcd1050 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 11 Nov 2007 11:31:07 +0000 Subject: [PATCH] Fixed long term client issue when player id overflows (very unlikely, as it is 32 bits). --- src/net/common/clientthread.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index f8c078fa..d9598b88 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -416,6 +416,21 @@ ClientThread::SetPlayerInfo(unsigned id, const PlayerInfo &info) { { boost::mutex::scoped_lock lock(m_playerInfoMapMutex); + // Remove previous player entry with different id + // for the same player name if it exists. + // This can only be one entry, since every time a duplicate + // name is added one is removed. + PlayerInfoMap::iterator i = m_playerInfoMap.begin(); + PlayerInfoMap::iterator end = m_playerInfoMap.end(); + while (i != end) + { + if (i->first != id && i->second.playerName == info.playerName) + { + m_playerInfoMap.erase(i); + break; + } + ++i; + } m_playerInfoMap[id] = info; }