diff options
author | Oldřich Jedlička <oldium.pro@gmail.com> | 2023-04-26 07:26:43 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-04-26 14:40:05 (GMT) |
commit | a368a5946744191b3385774882b08a2f0cf7bd48 (patch) | |
tree | b0718f887f0bee36a7d84ce297c5f3262405f799 /Source | |
parent | 827d5b75d47126205faba26cabc8856c6d9c3362 (diff) | |
download | CMake-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.cxx | 7 |
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; }(); |