aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server/Protocol
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-06-22 18:03:07 +0200
committerMachiavelli <machiavelli.trinity@gmail.com>2011-06-22 18:04:12 +0200
commit9b17b9c3baac9e8eed9b5d0775c8609aedfbf614 (patch)
tree57b6f34acdfe1f5ccaaea55d856ca2469bf5411b /src/server/game/Server/Protocol
parent41254653a2fd5eeaafcc63871b76ff7b4283f9dd (diff)
Core/DBLayer: Fix possible crashes from fe8cb7
Diffstat (limited to 'src/server/game/Server/Protocol')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/CharacterHandler.cpp15
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;