Core/Logging: Fix delete player crash having logging player enabled.

closes #7437
This commit is contained in:
Spp
2012-09-01 21:15:20 +02:00
parent 4bc983d7b7
commit 5cafe0ca01
3 changed files with 11 additions and 14 deletions

View File

@@ -723,11 +723,7 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket & recv_data)
{
std::string dump;
if (PlayerDumpWriter().GetDump(GUID_LOPART(guid), dump))
{
std::ostringstream ss;
ss << GetAccountId() << '_' << name.c_str();
sLog->outCharDump(ss.str().c_str(), dump.c_str(), GetAccountId(), GUID_LOPART(guid), name.c_str());
}
sLog->outCharDump(dump.c_str(), GetAccountId(), GUID_LOPART(guid), name.c_str());
}
Player::DeleteFromDB(guid, GetAccountId());

View File

@@ -435,19 +435,20 @@ void Log::outFatal(LogFilterType filter, const char * str, ...)
va_end(ap);
}
void Log::outCharDump(const char* param, const char * str, ...)
void Log::outCharDump(char const* str, uint32 accountId, uint32 guid, char const* name)
{
if (!str || !ShouldLog(LOG_FILTER_PLAYER_DUMP, LOG_LEVEL_INFO))
return;
va_list ap;
va_start(ap, str);
char text[MAX_QUERY_LEN];
vsnprintf(text, MAX_QUERY_LEN, str, ap);
va_end(ap);
std::ostringstream ss;
ss << "== START DUMP == (account: " << accountId << " guid: " << guid << " name: " << name
<< ")\n" << str << "\n== END DUMP ==\n";
LogMessage* msg = new LogMessage(LOG_LEVEL_INFO, LOG_FILTER_PLAYER_DUMP, text);
msg->param1 = param;
LogMessage* msg = new LogMessage(LOG_LEVEL_INFO, LOG_FILTER_PLAYER_DUMP, ss.str());
ss.clear();
ss << accountId << '_' << name;
msg->param1 = ss.str();
write(msg);
}

View File

@@ -56,7 +56,7 @@ class Log
void EnableDBAppenders();
void outCommand(uint32 account, const char * str, ...) ATTR_PRINTF(3, 4);
void outCharDump(const char* param, const char* str, ...) ATTR_PRINTF(3, 4);
void outCharDump(char const* str, uint32 account_id, uint32 guid, char const* name);
static std::string GetTimestampStr();
void SetRealmID(uint32 id);