diff --git a/components/debug/debugging.cpp b/components/debug/debugging.cpp index 6a6f044eee..9ada024431 100644 --- a/components/debug/debugging.cpp +++ b/components/debug/debugging.cpp @@ -173,10 +173,7 @@ namespace Debug return All; } - virtual std::streamsize writeImpl(const char* str, std::streamsize size, Level debugLevel) - { - return size; - } + virtual std::streamsize writeImpl(const char* str, std::streamsize size, Level debugLevel) { return size; } }; #if defined _WIN32 && defined _DEBUG @@ -185,10 +182,16 @@ namespace Debug public: std::streamsize writeImpl(const char* str, std::streamsize size, Level debugLevel) { - // Make a copy for null termination - std::string tmp(str, static_cast(size)); + if (size > std::numeric_limits::max()) + OutputDebugStringW(L"Next line truncated..."); + auto wideSize = MultiByteToWideChar(CP_UTF8, 0, str, + static_cast(std::min(size, std::numeric_limits::max())), nullptr, 0); + std::wstring wide(wideSize, L'\0'); + MultiByteToWideChar(CP_UTF8, 0, str, + static_cast(std::min(size, std::numeric_limits::max())), wide.data(), + wideSize); // Write string to Visual Studio Debug output - OutputDebugString(tmp.c_str()); + OutputDebugStringW(wide.c_str()); return size; }