summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/FileManager.cpp
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2011-11-17 06:16:05 +0000
committerNAKAMURA Takumi <geek4civic@gmail.com>2011-11-17 06:16:05 +0000
commit32f1acf14a649200b7818c56a0ab322d57733c20 (patch)
tree7e19cf83c77253915efc9a058d4634793deacc97 /clang/lib/Basic/FileManager.cpp
parent0f65d59e5224ad9ed16ae0db9c700b73b7988d94 (diff)
downloadbcm5719-llvm-32f1acf14a649200b7818c56a0ab322d57733c20.tar.gz
bcm5719-llvm-32f1acf14a649200b7818c56a0ab322d57733c20.zip
Revert r132539 for now, "My testing shows that function stat has no problem with trailing separators. (tested on Windows and Darwin)."
It caused PR10331. MSVCRT stat() cannot strip trailing '/'. (can '\') llvm-svn: 144884
Diffstat (limited to 'clang/lib/Basic/FileManager.cpp')
-rw-r--r--clang/lib/Basic/FileManager.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp
index 69e65bc38ad..274a9a1d257 100644
--- a/clang/lib/Basic/FileManager.cpp
+++ b/clang/lib/Basic/FileManager.cpp
@@ -265,6 +265,12 @@ void FileManager::addAncestorsAsVirtualDirs(StringRef Path) {
///
const DirectoryEntry *FileManager::getDirectory(StringRef DirName,
bool CacheFailure) {
+ // stat doesn't like trailing separators.
+ // At least, on Win32 MSVCRT, stat() cannot strip trailing '/'.
+ // (though it can strip '\\')
+ if (DirName.size() > 1 && llvm::sys::path::is_separator(DirName.back()))
+ DirName = DirName.substr(0, DirName.size()-1);
+
++NumDirLookups;
llvm::StringMapEntry<DirectoryEntry *> &NamedDirEnt =
SeenDirEntries.GetOrCreateValue(DirName);
OpenPOWER on IntegriCloud