diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-04-12 16:33:53 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-04-12 16:33:53 +0000 |
commit | 1834dc752065a701493194af8c61c6a346adcd4e (patch) | |
tree | e03debfefc518ad983c32d976581661e8c0e22ef /clang/lib | |
parent | 279970c0dc769dc24e5b66ed8fa6fcdc7653d4f4 (diff) | |
download | bcm5719-llvm-1834dc752065a701493194af8c61c6a346adcd4e.tar.gz bcm5719-llvm-1834dc752065a701493194af8c61c6a346adcd4e.zip |
[FileManager] Don't crash if reading from stdin and stat(".") fails
addAncestorsAsVirtualDirs("<stdin>") quickly returns without doing work
because "<stdin>" has no parent_path. This violates the expectation
that a subsequent call to getDirectoryFromFile("<stdin>") 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
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/FileManager.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index ba016db011e..c4cc8dc5419 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; |