diff options
author | Brad King <brad.king@kitware.com> | 2017-10-10 12:43:41 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-10-10 12:43:41 (GMT) |
commit | f1a4ecdc0c62b46c90df5e8d20e6f61d06063894 (patch) | |
tree | 405aa77560c8a6855cdda3e6e63b5fa0b4e04af7 /Source/kwsys/SystemTools.cxx | |
parent | c798dc8573a205f90663e9983b793b21fea28521 (diff) | |
parent | c551ff588b48cc4c286922779651890da0f3c22c (diff) | |
download | CMake-f1a4ecdc0c62b46c90df5e8d20e6f61d06063894.zip CMake-f1a4ecdc0c62b46c90df5e8d20e6f61d06063894.tar.gz CMake-f1a4ecdc0c62b46c90df5e8d20e6f61d06063894.tar.bz2 |
Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
KWSys 2017-10-10 (239bc737)
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index ecfa331..a24a326 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -20,6 +20,7 @@ #include KWSYS_HEADER(SystemTools.hxx) #include KWSYS_HEADER(Directory.hxx) #include KWSYS_HEADER(FStream.hxx) +#include KWSYS_HEADER(Encoding.h) #include KWSYS_HEADER(Encoding.hxx) #include <fstream> @@ -227,13 +228,17 @@ inline const char* Getcwd(char* buf, unsigned int len) { std::vector<wchar_t> w_buf(len); if (_wgetcwd(&w_buf[0], len)) { - // make sure the drive letter is capital - if (wcslen(&w_buf[0]) > 1 && w_buf[1] == L':') { - w_buf[0] = towupper(w_buf[0]); + size_t nlen = kwsysEncoding_wcstombs(buf, &w_buf[0], len); + if (nlen == static_cast<size_t>(-1)) { + return 0; + } + if (nlen < len) { + // make sure the drive letter is capital + if (nlen > 1 && buf[1] == ':') { + buf[0] = toupper(buf[0]); + } + return buf; } - std::string tmp = KWSYS_NAMESPACE::Encoding::ToNarrow(&w_buf[0]); - strcpy(buf, tmp.c_str()); - return buf; } return 0; } |