aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-04-04 22:26:34 +0200
committerShauren <shauren.trinity@gmail.com>2011-04-04 22:27:15 +0200
commit379308140b7e958c10fef72fcba872648a354c85 (patch)
treee02164ef994c81bd3c1370ef4aca58721bec6aa4 /src
parent804953911e8db5873ec324649754f6f5096412f6 (diff)
Core/Player: Prevented infinite growth of allowedCharsToLogin container and changed its type to better reflect its purpose
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/CharacterHandler.cpp3
-rwxr-xr-xsrc/server/game/Server/WorldSession.h10
2 files changed, 5 insertions, 8 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
index 866cdf91746..a28bee60c76 100755
--- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
@@ -205,6 +205,7 @@ void WorldSession::HandleCharEnum(QueryResult result)
data << num;
+ _allowedCharsToLogin.clear();
if (result)
{
do
@@ -213,7 +214,7 @@ void WorldSession::HandleCharEnum(QueryResult result)
sLog->outDetail("Loading char guid %u from account %u.",guidlow,GetAccountId());
if (Player::BuildEnumData(result, &data))
{
- m_AllowedCharsToLogin.push_back(guidlow);
+ _allowedCharsToLogin.insert(guidlow);
++num;
}
}
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index b881b0b4140..a295d285403 100755
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -883,17 +883,13 @@ class WorldSession
void LogUnprocessedTail(WorldPacket *packet);
// EnumData helpers
- bool CharCanLogin(uint32 LowGUID)
+ bool CharCanLogin(uint32 lowGUID)
{
- if (find(m_AllowedCharsToLogin.begin(),
- m_AllowedCharsToLogin.end(),
- LowGUID) == m_AllowedCharsToLogin.end())
- return false;
- return true;
+ return _allowedCharsToLogin.find(lowGUID) != _allowedCharsToLogin.end();
}
// this stores the GUIDs of the characters who can login
// characters who failed on Player::BuildEnumData shouldn't login
- std::list<uint32> m_AllowedCharsToLogin;
+ std::set<uint32> _allowedCharsToLogin;
uint32 m_GUIDLow; // set loggined or recently logout player (while m_playerRecentlyLogout set)
Player *_player;