1
0
Fork 0

Fix #11948: [Win32] Convert error messages to utf8 (#11951)

pull/11958/head
Loïc Guilloux 2024-02-02 16:30:23 +01:00 committed by GitHub
parent 3545decf2d
commit 0e738dda88
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 12 deletions

View File

@ -73,15 +73,16 @@ NetworkHTTPRequest::NetworkHTTPRequest(const std::wstring &uri, HTTPCallback *ca
static std::string GetLastErrorAsString() static std::string GetLastErrorAsString()
{ {
char buffer[512]; wchar_t buffer[512];
DWORD error_code = GetLastError(); DWORD error_code = GetLastError();
if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS, GetModuleHandleA("winhttp.dll"), error_code, 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, sizeof(buffer), nullptr) == 0) { MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) {
return fmt::format("unknown error {}", error_code); return fmt::format("unknown error {}", error_code);
} }
return buffer; return FS2OTTD(buffer);
} }
/** /**

View File

@ -81,12 +81,12 @@ const std::string &NetworkError::AsString() const
{ {
if (this->message.empty()) { if (this->message.empty()) {
#if defined(_WIN32) #if defined(_WIN32)
char buffer[512]; wchar_t buffer[512];
if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, this->error, if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, this->error,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), nullptr) == 0) { MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) {
this->message.assign(fmt::format("Unknown error {}", this->error)); this->message.assign(fmt::format("Unknown error {}", this->error));
} else { } else {
this->message.assign(buffer); this->message.assign(FS2OTTD(buffer));
} }
#else #else
/* Make strerror thread safe by locking access to it. There is a thread safe strerror_r, however /* Make strerror thread safe by locking access to it. There is a thread safe strerror_r, however

View File

@ -20,13 +20,13 @@ static std::string GetLoadError()
{ {
auto error_code = GetLastError(); auto error_code = GetLastError();
char buffer[512]; wchar_t buffer[512];
if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, error_code, if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, error_code,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, sizeof(buffer), nullptr) == 0) { MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, lengthof(buffer), nullptr) == 0) {
return fmt::format("Unknown error {}", error_code); return fmt::format("Unknown error {}", error_code);
} }
return buffer; return FS2OTTD(buffer);
} }
void *LibraryLoader::OpenLibrary(const std::string &filename) void *LibraryLoader::OpenLibrary(const std::string &filename)