diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2011-11-17 06:16:05 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2011-11-17 06:16:05 +0000 |
commit | 678a3ead409516d8e24831297b9a3bb98f6217c3 (patch) | |
tree | 8f8d6b2884bec6a17d4f07439128d31015befe88 /lib/Basic/FileManager.cpp | |
parent | 6fe2965ce722826ae7c3af85271f900286ef20c3 (diff) |
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 '\')
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144884 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/FileManager.cpp')
-rw-r--r-- | lib/Basic/FileManager.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 69e65bc38a..274a9a1d25 100644 --- a/lib/Basic/FileManager.cpp +++ b/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); |