From c1f9bd293133eb46e94c0be63bf256e6a0b32b42 Mon Sep 17 00:00:00 2001 From: AnyOldName3 Date: Tue, 27 Jan 2026 00:28:49 +0000 Subject: [PATCH] Fix DebugOutput https://gitlab.com/OpenMW/openmw/-/issues/8944 --- components/debug/debugging.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) 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; }