summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorOldřich Jedlička <oldium.pro@gmail.com>2023-04-26 07:26:43 (GMT)
committerBrad King <brad.king@kitware.com>2023-04-26 14:40:05 (GMT)
commita368a5946744191b3385774882b08a2f0cf7bd48 (patch)
treeb0718f887f0bee36a7d84ce297c5f3262405f799 /Source
parent827d5b75d47126205faba26cabc8856c6d9c3362 (diff)
downloadCMake-a368a5946744191b3385774882b08a2f0cf7bd48.zip
CMake-a368a5946744191b3385774882b08a2f0cf7bd48.tar.gz
CMake-a368a5946744191b3385774882b08a2f0cf7bd48.tar.bz2
Windows: Tolerate GetShortPathNameW failure
This function is used by NMake Makefile generator, but when shortening path fails, it previously returned an empty string. `ERROR_ACCESS_DENIED` is returned for paths within `C:\Program Files\WindowsApps`, which is a special folder with limited access rights. It looks like this is [by design](https://superuser.com/a/1730061/213587). Fixes: #24853
Diffstat (limited to 'Source')
-rw-r--r--Source/cmOutputConverter.cxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx
index 40fed80..53cb21e 100644
--- a/Source/cmOutputConverter.cxx
+++ b/Source/cmOutputConverter.cxx
@@ -175,7 +175,12 @@ std::string cmOutputConverter::ConvertToOutputForExisting(
}
std::string tmp{};
- cmSystemTools::GetShortPath(remote, tmp);
+ cmsys::Status status = cmSystemTools::GetShortPath(remote, tmp);
+ if (!status) {
+ // Fallback for cases when Windows refuses to resolve the short path,
+ // like for C:\Program Files\WindowsApps\...
+ tmp = remote;
+ }
shortPathCache[remote] = tmp;
return tmp;
}();