diff --git a/src/network/core/http_winhttp.cpp b/src/network/core/http_winhttp.cpp index 9d365f6d17..8acab0a5a3 100644 --- a/src/network/core/http_winhttp.cpp +++ b/src/network/core/http_winhttp.cpp @@ -73,15 +73,16 @@ NetworkHTTPRequest::NetworkHTTPRequest(const std::wstring &uri, HTTPCallback *ca static std::string GetLastErrorAsString() { - char buffer[512]; + wchar_t buffer[512]; + DWORD error_code = GetLastError(); - if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS, GetModuleHandleA("winhttp.dll"), error_code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), nullptr) == 0) { + if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS, GetModuleHandle(L"winhttp.dll"), error_code, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) { return fmt::format("unknown error {}", error_code); } - return buffer; + return FS2OTTD(buffer); } /** diff --git a/src/network/core/os_abstraction.cpp b/src/network/core/os_abstraction.cpp index 62bec62852..97647a4165 100644 --- a/src/network/core/os_abstraction.cpp +++ b/src/network/core/os_abstraction.cpp @@ -81,12 +81,12 @@ const std::string &NetworkError::AsString() const { if (this->message.empty()) { #if defined(_WIN32) - char buffer[512]; - if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, this->error, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), nullptr) == 0) { + wchar_t buffer[512]; + if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, this->error, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) { this->message.assign(fmt::format("Unknown error {}", this->error)); } else { - this->message.assign(buffer); + this->message.assign(FS2OTTD(buffer)); } #else /* Make strerror thread safe by locking access to it. There is a thread safe strerror_r, however diff --git a/src/os/windows/library_loader_win.cpp b/src/os/windows/library_loader_win.cpp index 0281b0ab23..eea8f061f9 100644 --- a/src/os/windows/library_loader_win.cpp +++ b/src/os/windows/library_loader_win.cpp @@ -20,13 +20,13 @@ static std::string GetLoadError() { auto error_code = GetLastError(); - char buffer[512]; - if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, error_code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), nullptr) == 0) { + wchar_t buffer[512]; + if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, error_code, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) { return fmt::format("Unknown error {}", error_code); } - return buffer; + return FS2OTTD(buffer); } void *LibraryLoader::OpenLibrary(const std::string &filename)