From 1834dc752065a701493194af8c61c6a346adcd4e Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Tue, 12 Apr 2016 16:33:53 +0000 Subject: [PATCH] [FileManager] Don't crash if reading from stdin and stat(".") fails addAncestorsAsVirtualDirs("") quickly returns without doing work because "" has no parent_path. This violates the expectation that a subsequent call to getDirectoryFromFile("") would succeed. Instead, it fails because it uses the "." if the file has no path component. Fix this by keeping the behavior between addAncestorsAsVirtualDirs and getDirectoryFromFile symmetric. llvm-svn: 266089 --- clang/lib/Basic/FileManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index ba016db..c4cc8dc 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -123,7 +123,7 @@ static const DirectoryEntry *getDirectoryFromFile(FileManager &FileMgr, void FileManager::addAncestorsAsVirtualDirs(StringRef Path) { StringRef DirName = llvm::sys::path::parent_path(Path); if (DirName.empty()) - return; + DirName = "."; auto &NamedDirEnt = *SeenDirEntries.insert(std::make_pair(DirName, nullptr)).first; -- 2.7.4