diff options
| author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-06-22 18:03:07 +0200 |
|---|---|---|
| committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-06-22 18:04:12 +0200 |
| commit | 9b17b9c3baac9e8eed9b5d0775c8609aedfbf614 (patch) | |
| tree | 57b6f34acdfe1f5ccaaea55d856ca2469bf5411b /src/server/game/Server/Protocol | |
| parent | 41254653a2fd5eeaafcc63871b76ff7b4283f9dd (diff) | |
Core/DBLayer: Fix possible crashes from fe8cb7
Diffstat (limited to 'src/server/game/Server/Protocol')
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
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; |
