diff options
author | Brad King <brad.king@kitware.com> | 2022-09-26 13:35:16 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-09-26 13:35:32 (GMT) |
commit | 5838093985ac96648cacb4a3b8f5190b5c884d0b (patch) | |
tree | 375902bd296aab648db4eb420d98f91a1abb04c7 | |
parent | ba9d51a4d3d917f969c3b00c9fef8de4e952795d (diff) | |
parent | 1b64aa68b9ff438f10d9880d40ea06751706be81 (diff) | |
download | CMake-5838093985ac96648cacb4a3b8f5190b5c884d0b.zip CMake-5838093985ac96648cacb4a3b8f5190b5c884d0b.tar.gz CMake-5838093985ac96648cacb4a3b8f5190b5c884d0b.tar.bz2 |
Merge topic 'unicode-env'
1b64aa68b9 cmSystemTools: Fix encoding of whole-environment lookup on Windows
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7705
-rw-r--r-- | Source/cmSystemTools.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 8e77afa..5737cc1 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1642,9 +1642,18 @@ std::vector<std::string> cmSystemTools::GetEnvironmentVariables() { std::vector<std::string> env; int cc; +# ifdef _WIN32 + // if program starts with main, _wenviron is initially NULL, call to + // _wgetenv and create wide-character string environment + _wgetenv(L""); + for (cc = 0; _wenviron[cc]; ++cc) { + env.emplace_back(cmsys::Encoding::ToNarrow(_wenviron[cc])); + } +# else for (cc = 0; environ[cc]; ++cc) { env.emplace_back(environ[cc]); } +# endif return env; } |