From 9b17b9c3baac9e8eed9b5d0775c8609aedfbf614 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Wed, 22 Jun 2011 18:03:07 +0200 Subject: Core/DBLayer: Fix possible crashes from fe8cb7 --- .../game/Server/Protocol/Handlers/CharacterHandler.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/server/game/Server/Protocol') diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp index 1dd18d9c2f1..9e25f686c3f 100755 --- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp @@ -445,7 +445,8 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte Field *fields = result->Fetch(); // SELECT SUM(x) is MYSQL_TYPE_NEWDECIMAL - needs to be read as string const char* ch = fields[0].GetCString(); - acctCharCount = atoi(ch); + if (ch) + acctCharCount = atoi(ch); } if (acctCharCount >= sWorld->getIntConfig(CONFIG_CHARACTERS_PER_ACCOUNT)) @@ -454,6 +455,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_ACCOUNT_LIMIT); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); _charCreateCallback.FreeResult(); return; } @@ -483,6 +485,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_SERVER_LIMIT); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); _charCreateCallback.FreeResult(); return; } @@ -500,6 +503,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_LEVEL_REQUIREMENT); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); _charCreateCallback.FreeResult(); return; } @@ -550,6 +554,8 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_UNIQUE_CLASS_LIMIT); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); + _charCreateCallback.FreeResult(); return; } } @@ -576,6 +582,8 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_PVP_TEAMS_VIOLATION); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); + _charCreateCallback.FreeResult(); return; } } @@ -607,6 +615,8 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_UNIQUE_CLASS_LIMIT); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); + _charCreateCallback.FreeResult(); return; } } @@ -639,6 +649,8 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte data << uint8(CHAR_CREATE_ERROR); SendPacket(&data); delete createInfo; + _charCreateCallback.SetParam(NULL); + _charCreateCallback.FreeResult(); return; } @@ -679,6 +691,7 @@ void WorldSession::HandleCharCreateCallback(PreparedQueryResult result, Characte delete pNewChar; // created only to call SaveToDB() delete createInfo; + _charCreateCallback.SetParam(NULL); _charCreateCallback.FreeResult(); } break; -- cgit v1.2.3