[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
GitOrigin-RevId: f88b502d9bc7c2d7db8db340d5b98fc7f46eba9c
diff --git a/lib/Support/FileCollector.cpp b/lib/Support/FileCollector.cpp
index 9948207..7d23d03 100644
--- a/lib/Support/FileCollector.cpp
+++ b/lib/Support/FileCollector.cpp
@@ -35,7 +35,7 @@
SmallString<256> TmpDest = Path, UpperDest, RealDest;
// 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
Path = TmpDest;
@@ -44,7 +44,7 @@
// sensitive in the absence of real_path, since this is the YAMLVFSWriter
// default.
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 true;
}