From: NAKAMURA Takumi Date: Sat, 16 Jun 2012 06:04:10 +0000 (+0000) Subject: clang/lib/Basic/FileManager.cpp: Detect the root directory with PathV2. It should... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=759a4b40cab9dd04683a548f998ebe2e443ca6b4;p=clang clang/lib/Basic/FileManager.cpp: Detect the root directory with PathV2. It should be better fix for PR10331, or, "clang X:\foo.c" fails. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158596 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 5b9769dbb9..75333f8fb5 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -261,10 +261,12 @@ void FileManager::addAncestorsAsVirtualDirs(StringRef Path) { const DirectoryEntry *FileManager::getDirectory(StringRef DirName, bool CacheFailure) { - // stat doesn't like trailing separators. + // stat doesn't like trailing separators except for root directory. // At least, on Win32 MSVCRT, stat() cannot strip trailing '/'. // (though it can strip '\\') - if (DirName.size() > 1 && llvm::sys::path::is_separator(DirName.back())) + if (DirName.size() > 1 && + DirName != llvm::sys::path::root_path(DirName) && + llvm::sys::path::is_separator(DirName.back())) DirName = DirName.substr(0, DirName.size()-1); ++NumDirLookups;