1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00

[FileCollector] Fix that the file system case-sensitivity check was inverted

real_path returns an `std::error_code` which evaluates to `true` in case an
error happens and `false` if not. This code was checking the inverse, so
case-insensitive file systems ended up being detected as case sensitive.

Tested using an LLDB reproducer test as we anyway need a real file system and
also some matching logic to detect whether the respective file system is
case-sensitive (which the test is doing via some Python checks that we can't
really emulate with the usual FileCheck logic).

Fixes rdar://67003004

Reviewed By: JDevlieghere

Differential Revision: https://reviews.llvm.org/D96795
This commit is contained in:
Raphael Isemann 2021-02-16 20:19:25 +01:00
parent c5e37509c1
commit 8e3d373535

View File

@ -35,7 +35,7 @@ static bool isCaseSensitivePath(StringRef Path) {
SmallString<256> TmpDest = Path, UpperDest, RealDest; SmallString<256> TmpDest = Path, UpperDest, RealDest;
// Remove component traversals, links, etc. // Remove component traversals, links, etc.
if (!sys::fs::real_path(Path, TmpDest)) if (sys::fs::real_path(Path, TmpDest))
return true; // Current default value in vfs.yaml return true; // Current default value in vfs.yaml
Path = TmpDest; Path = TmpDest;
@ -44,7 +44,7 @@ static bool isCaseSensitivePath(StringRef Path) {
// sensitive in the absence of real_path, since this is the YAMLVFSWriter // sensitive in the absence of real_path, since this is the YAMLVFSWriter
// default. // default.
UpperDest = Path.upper(); UpperDest = Path.upper();
if (sys::fs::real_path(UpperDest, RealDest) && Path.equals(RealDest)) if (!sys::fs::real_path(UpperDest, RealDest) && Path.equals(RealDest))
return false; return false;
return true; return true;
} }