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
@@ -723,11 +723,7 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket & recv_data)
{ {
std::string dump; std::string dump;
if (PlayerDumpWriter().GetDump(GUID_LOPART(guid), dump)) if (PlayerDumpWriter().GetDump(GUID_LOPART(guid), dump))
{ sLog->outCharDump(dump.c_str(), GetAccountId(), GUID_LOPART(guid), name.c_str());
std::ostringstream ss;
ss << GetAccountId() << '_' << name.c_str();
sLog->outCharDump(ss.str().c_str(), dump.c_str(), GetAccountId(), GUID_LOPART(guid), name.c_str());
}
} }
Player::DeleteFromDB(guid, GetAccountId()); Player::DeleteFromDB(guid, GetAccountId());
+9 -8
View File
@@ -435,19 +435,20 @@ void Log::outFatal(LogFilterType filter, const char * str, ...)
va_end(ap); 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)) if (!str || !ShouldLog(LOG_FILTER_PLAYER_DUMP, LOG_LEVEL_INFO))
return; return;
va_list ap; std::ostringstream ss;
va_start(ap, str); ss << "== START DUMP == (account: " << accountId << " guid: " << guid << " name: " << name
char text[MAX_QUERY_LEN]; << ")\n" << str << "\n== END DUMP ==\n";
vsnprintf(text, MAX_QUERY_LEN, str, ap);
va_end(ap);
LogMessage* msg = new LogMessage(LOG_LEVEL_INFO, LOG_FILTER_PLAYER_DUMP, text); LogMessage* msg = new LogMessage(LOG_LEVEL_INFO, LOG_FILTER_PLAYER_DUMP, ss.str());
msg->param1 = param; ss.clear();
ss << accountId << '_' << name;
msg->param1 = ss.str();
write(msg); write(msg);
} }
+1 -1
View File
@@ -56,7 +56,7 @@ class Log
void EnableDBAppenders(); void EnableDBAppenders();
void outCommand(uint32 account, const char * str, ...) ATTR_PRINTF(3, 4); 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(); static std::string GetTimestampStr();
void SetRealmID(uint32 id); void SetRealmID(uint32 id);