aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-09-01 21:15:20 +0200
committerSpp <spp@jorge.gr>2012-09-01 21:15:20 +0200
commit5cafe0ca01afce24d820d29b91f1a66fefcb75a0 (patch)
tree45bd706bc5929a30c15f456fb13781c1b6c1c368
parent4bc983d7b756d235477eef8b7529cacfb7a1f247 (diff)
Core/Logging: Fix delete player crash having logging player enabled.
closes #7437
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp6
-rwxr-xr-xsrc/server/shared/Logging/Log.cpp17
-rwxr-xr-xsrc/server/shared/Logging/Log.h2
3 files changed, 11 insertions, 14 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 8544266840f..c294dd9b772 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -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());
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 0b2bbb3122a..9f503a38f40 100755
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -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);
}
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index cd1e9dc80df..7980df0d52a 100755
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -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);