[cfe-commits] r144884 - /cfe/trunk/lib/Basic/FileManager.cpp
NAKAMURA Takumi
geek4civic at gmail.com
Wed Nov 16 22:16:06 PST 2011
Author: chapuni
Date: Thu Nov 17 00:16:05 2011
New Revision: 144884
URL: http://llvm.org/viewvc/llvm-project?rev=144884&view=rev
Log:
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 '\')
Modified:
cfe/trunk/lib/Basic/FileManager.cpp
Modified: cfe/trunk/lib/Basic/FileManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=144884&r1=144883&r2=144884&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/FileManager.cpp (original)
+++ cfe/trunk/lib/Basic/FileManager.cpp Thu Nov 17 00:16:05 2011
@@ -265,6 +265,12 @@
///
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);
More information about the cfe-commits
mailing list