diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 1a6ea0f28e..f3e2c2f7c3 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1774,7 +1774,7 @@ DEF_CONSOLE_CMD(ConDebugLevel) if (argc > 2) return false; if (argc == 1) { - IConsolePrintF(CC_DEFAULT, "Current debug-level: '%s'", GetDebugString()); + IConsolePrintF(CC_DEFAULT, "Current debug-level: '%s'", GetDebugString().c_str()); } else { SetDebugString(argv[1], [](const char *err) { IConsolePrint(CC_ERROR, err); }); } diff --git a/src/debug.cpp b/src/debug.cpp index 593b8e9b6e..ba819c79bd 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -313,22 +313,13 @@ void SetDebugString(const char *s, void (*error_func)(const char *)) * Just return a string with the values of all the debug categories. * @return string with debug-levels */ -const char *GetDebugString() +std::string GetDebugString() { - const DebugLevel *i; - static char dbgstr[150]; - char dbgval[20]; - - memset(dbgstr, 0, sizeof(dbgstr)); - i = debug_level; - seprintf(dbgstr, lastof(dbgstr), "%s=%d", i->name, *i->level); - - for (i++; i != endof(debug_level); i++) { - seprintf(dbgval, lastof(dbgval), ", %s=%d", i->name, *i->level); - strecat(dbgstr, dbgval, lastof(dbgstr)); + std::string result; + for (size_t i = 0; i < lengthof(debug_level); i++) { + result += stdstr_fmt("%s%s=%d", i == 0 ? "" : ", ", debug_level[i].name, *(debug_level[i].level)); } - - return dbgstr; + return result; } /** diff --git a/src/debug.h b/src/debug.h index 49b45b3206..4ea8a08187 100644 --- a/src/debug.h +++ b/src/debug.h @@ -69,7 +69,7 @@ void debug_print(const char *dbg, const char *buf); char *DumpDebugFacilityNames(char *buf, char *last); void SetDebugString(const char *s, void (*error_func)(const char *)); -const char *GetDebugString(); +std::string GetDebugString(); /* Shorter form for passing filename and linenumber */ #define FILE_LINE __FILE__, __LINE__