diff options
author | Brad King <brad.king@kitware.com> | 2017-11-09 13:35:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-11-09 13:35:51 (GMT) |
commit | 8bef3e31bddf1ea7ab3fe6a0871e76d52806cfcb (patch) | |
tree | 2986d4f16b47270cde9fbca45d9e5faa202996f1 | |
parent | 4eefad236aad84c1f4ca38fcd3533a0ec7401a3b (diff) | |
parent | e8d0b4312e0454ed3a0787acb2ecbef2c3a364a9 (diff) | |
download | CMake-8bef3e31bddf1ea7ab3fe6a0871e76d52806cfcb.zip CMake-8bef3e31bddf1ea7ab3fe6a0871e76d52806cfcb.tar.gz CMake-8bef3e31bddf1ea7ab3fe6a0871e76d52806cfcb.tar.bz2 |
Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
KWSys 2017-11-09 (40d7b1bb)
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 1f7ee10..50aa857 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -27,6 +27,7 @@ #include <iostream> #include <set> #include <sstream> +#include <utility> #include <vector> // Work-around CMake dependency scanning limitation. This must @@ -3372,7 +3373,7 @@ std::string SystemTools::RelativePath(const std::string& local, } #ifdef _WIN32 -static std::string GetCasePathName(std::string const& pathIn) +static std::pair<std::string, bool> GetCasePathName(std::string const& pathIn) { std::string casePath; std::vector<std::string> path_components; @@ -3381,7 +3382,7 @@ static std::string GetCasePathName(std::string const& pathIn) { // Relative paths cannot be converted. casePath = pathIn; - return casePath; + return std::make_pair(casePath, false); } // Start with root component. @@ -3433,7 +3434,7 @@ static std::string GetCasePathName(std::string const& pathIn) casePath += path_components[idx]; } - return casePath; + return std::make_pair(casePath, converting); } #endif @@ -3448,12 +3449,14 @@ std::string SystemTools::GetActualCaseForPath(const std::string& p) if (i != SystemTools::PathCaseMap->end()) { return i->second; } - std::string casePath = GetCasePathName(p); - if (casePath.size() > MAX_PATH) { - return casePath; + std::pair<std::string, bool> casePath = GetCasePathName(p); + if (casePath.first.size() > MAX_PATH) { + return casePath.first; } - (*SystemTools::PathCaseMap)[p] = casePath; - return casePath; + if (casePath.second) { + (*SystemTools::PathCaseMap)[p] = casePath.first; + } + return casePath.first; #endif } |