diff options
author | Sean Silva <chisophugis@gmail.com> | 2015-07-30 07:30:24 +0000 |
---|---|---|
committer | Sean Silva <chisophugis@gmail.com> | 2015-07-30 07:30:24 +0000 |
commit | de3816655a61c2a575671ccdcb9c8f602dfd4706 (patch) | |
tree | b098b43d5d4972dfd4e5fb9bc559110873da5363 /clang/lib/Basic/FileManager.cpp | |
parent | 5a45222745ef8334405979986335c05b1e4dcaab (diff) | |
download | llvm-de3816655a61c2a575671ccdcb9c8f602dfd4706.zip llvm-de3816655a61c2a575671ccdcb9c8f602dfd4706.tar.gz llvm-de3816655a61c2a575671ccdcb9c8f602dfd4706.tar.bz2 |
Add a comment explaining differing Windows behavior.
llvm-svn: 243625
Diffstat (limited to 'clang/lib/Basic/FileManager.cpp')
-rw-r--r-- | clang/lib/Basic/FileManager.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index 209abad..4c84f1b 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -568,7 +568,13 @@ StringRef FileManager::getCanonicalName(const DirectoryEntry *Dir) { SmallString<256> CanonicalNameBuf(CanonicalName); llvm::sys::fs::make_absolute(CanonicalNameBuf); llvm::sys::path::native(CanonicalNameBuf); - removeDotPaths(CanonicalNameBuf, true); + // We've run into needing to remove '..' here in the wild though, so + // remove it. + // On Windows, symlinks are significantly less prevalent, so removing + // '..' is pretty safe. + // Ideally we'd have an equivalent of `realpath` and could implement + // sys::fs::canonical across all the platforms. + removeDotPaths(CanonicalNameBuf, /*RemoveDotDot*/true); char *Mem = CanonicalNameStorage.Allocate<char>(CanonicalNameBuf.size()); memcpy(Mem, CanonicalNameBuf.data(), CanonicalNameBuf.size()); CanonicalName = StringRef(Mem, CanonicalNameBuf.size()); |