From 0c7359e150f609f054f805723ede91f94e7cf344 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Fri, 29 Dec 2023 14:11:35 +0100 Subject: [PATCH] Common: Fix encoding handling in GetWin32ErrorString These messages can be localized, so we can't just assume it's all ASCII. --- Source/Core/Common/CommonFuncs.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Source/Core/Common/CommonFuncs.cpp b/Source/Core/Common/CommonFuncs.cpp index 0a546428b7..aff87a9258 100644 --- a/Source/Core/Common/CommonFuncs.cpp +++ b/Source/Core/Common/CommonFuncs.cpp @@ -10,7 +10,10 @@ #ifdef _WIN32 #include + #define strerror_r(err, buf, len) strerror_s(buf, len, err) + +#include "Common/StringUtil.h" #endif namespace Common @@ -59,11 +62,11 @@ std::string GetLastErrorString() // Like GetLastErrorString() but if you have already queried the error code. std::string GetWin32ErrorString(DWORD error_code) { - char error_message[BUFFER_SIZE]; + wchar_t error_message[BUFFER_SIZE]; - FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, nullptr, error_code, + FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, nullptr, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), error_message, BUFFER_SIZE, nullptr); - return std::string(error_message); + return WStringToUTF8(error_message); } // Obtains a full path to the specified module.