So I added your fix, but instead of crashing one zone now, it crashes the entire zone.exe, could you explain how this is supposed to be used? It's currently causing more detriment than anything.
Edit: Code below.
Code:
bool Bot::IsBotNameAvailable(std::string* errorMessage) {
bool Result = false;
if(this->GetCleanName()) {
char* Query = 0;
char TempErrorMessageBuffer[MYSQL_ERRMSG_SIZE];
MYSQL_RES* DatasetResult;
MYSQL_ROW DataRow;
if(!database.RunQuery(Query, MakeAnyLenString(&Query, "SELECT COUNT(id) FROM vwBotCharacterMobs WHERE name LIKE '%s'", this->GetCleanName()), TempErrorMessageBuffer, &DatasetResult)) {
*errorMessage = std::string(TempErrorMessageBuffer);
}
else {
uint32 ExistingNameCount = 0;
while(DataRow = mysql_fetch_row(DatasetResult)) {
ExistingNameCount = atoi(DataRow[0]);
break;
}
if(ExistingNameCount == 0)
Result = true;
mysql_free_result(DatasetResult);
if(!database.RunQuery(Query, MakeAnyLenString(&Query, "SELECT COUNT(id) FROM character_ WHERE name LIKE '%s'", this->GetCleanName()), TempErrorMessageBuffer, &DatasetResult))
{
*errorMessage = std::string(TempErrorMessageBuffer);
}
else
{
uint32 ExistingNameCount = 0;
while(DataRow = mysql_fetch_row(DatasetResult))
{
ExistingNameCount = atoi(DataRow[0]);
break;
}
if(ExistingNameCount == 0)
Result = true;
mysql_free_result(DatasetResult);
}
}
safe_delete(Query);
}
return Result;
}