diff options
| author | Alexandre Ganea <alexandre.ganea@ubisoft.com> | 2019-11-28 14:15:13 -0500 |
|---|---|---|
| committer | Alexandre Ganea <alexandre.ganea@ubisoft.com> | 2019-11-28 14:15:13 -0500 |
| commit | bdad3ec75ab35ade2433b1278689d483dcf9abc4 (patch) | |
| tree | 3a148c64d391f80c3f30137dde88d6b8f7ced205 | |
| parent | b4dfc5508f9239f50a3c44dd64e82a488b698b29 (diff) | |
| download | bcm5719-llvm-bdad3ec75ab35ade2433b1278689d483dcf9abc4.tar.gz bcm5719-llvm-bdad3ec75ab35ade2433b1278689d483dcf9abc4.zip | |
[LLDB] On Windows, force error message formatting to English
This fixes the Utility/StatusTest.ErrorWin32 unit test on non-English locales.
Differential Revision: https://reviews.llvm.org/D70442
| -rw-r--r-- | lldb/source/Utility/Status.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lldb/source/Utility/Status.cpp b/lldb/source/Utility/Status.cpp index 3b5094d64b7..b74db72773d 100644 --- a/lldb/source/Utility/Status.cpp +++ b/lldb/source/Utility/Status.cpp @@ -100,14 +100,23 @@ static std::string RetrieveWin32ErrorString(uint32_t error_code) { char *buffer = nullptr; std::string message; // Retrieve win32 system error. + // First, attempt to load a en-US message if (::FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK, - NULL, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + NULL, error_code, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (LPSTR)&buffer, 0, NULL)) { message.assign(buffer); ::LocalFree(buffer); } + // If the previous didn't work, use the default OS language + else if (::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, error_code, 0, (LPSTR)&buffer, 0, NULL)) { + message.assign(buffer); + ::LocalFree(buffer); + } return message; } #endif |

