From 25ea535aba0d076432ec37c46df98fe483e6fbe0 Mon Sep 17 00:00:00 2001 From: KWSys Upstream Date: Sat, 1 Mar 2025 10:05:10 -0500 Subject: KWSys 2025-03-01 (1d82baee) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 1d82baee88db598a77d9b1a07f7a5fb9b1860f83 (master). Upstream Shortlog ----------------- leha-bot (1): 1079929c Status: Fix encoding of error strings on Windows --- CMakeLists.txt | 3 +++ Status.cxx | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 106ea83..d6d43f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -173,6 +173,9 @@ if(KWSYS_USE_Process) set(KWSYS_USE_System 1) set(KWSYS_USE_Encoding 1) endif() +if(KWSYS_USE_Status) + set(KWSYS_USE_Encoding 1) +endif() if(KWSYS_USE_SystemInformation) set(KWSYS_USE_Process 1) endif() diff --git a/Status.cxx b/Status.cxx index edda7a0..17cb0eb 100644 --- a/Status.cxx +++ b/Status.cxx @@ -2,10 +2,12 @@ file Copyright.txt or https://cmake.org/licensing#kwsys for details. */ #include "kwsysPrivate.h" #include KWSYS_HEADER(Status.hxx) +#include KWSYS_HEADER(Encoding.hxx) // Work-around CMake dependency scanning limitation. This must // duplicate the above list of headers. #if 0 +# include "Encoding.hxx.in" # include "Status.hxx.in" #endif @@ -43,13 +45,13 @@ std::string Status::GetString() const break; #ifdef _WIN32 case Kind::Windows: { - LPSTR message = NULL; - DWORD size = FormatMessageA( + LPWSTR message = NULL; + DWORD size = FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, this->Windows_, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPSTR)&message, 0, NULL); - err = std::string(message, size); + (LPWSTR)&message, 0, NULL); + err = kwsys::Encoding::ToNarrow(message); LocalFree(message); } break; #endif -- cgit v0.12