aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/VirtualFileSystem.cpp
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2017-03-10 21:46:51 +0000
committerJuergen Ributzka <juergen@apple.com>2017-03-10 21:46:51 +0000
commitbc1c5b1d042bc057c37de0046179b1d510444ff9 (patch)
tree83f72d762918171999fc5afddc507b9743220922 /clang/lib/Basic/VirtualFileSystem.cpp
parent3fdfeeed9f2250c6c3b58a60a62d1d7782777e34 (diff)
downloadllvm-bc1c5b1d042bc057c37de0046179b1d510444ff9.zip
llvm-bc1c5b1d042bc057c37de0046179b1d510444ff9.tar.gz
llvm-bc1c5b1d042bc057c37de0046179b1d510444ff9.tar.bz2
Revert r297510 "[VFS] Ignore broken symlinks in the directory iterator."
The tests are failing on one of the bots. llvm-svn: 297517
Diffstat (limited to 'clang/lib/Basic/VirtualFileSystem.cpp')
-rw-r--r--clang/lib/Basic/VirtualFileSystem.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Basic/VirtualFileSystem.cpp b/clang/lib/Basic/VirtualFileSystem.cpp
index f5db717..43cd9f1 100644
--- a/clang/lib/Basic/VirtualFileSystem.cpp
+++ b/clang/lib/Basic/VirtualFileSystem.cpp
@@ -244,7 +244,8 @@ public:
if (!EC && Iter != llvm::sys::fs::directory_iterator()) {
llvm::sys::fs::file_status S;
EC = Iter->status(S);
- CurrentEntry = Status::copyWithNewName(S, Iter->path());
+ if (!EC)
+ CurrentEntry = Status::copyWithNewName(S, Iter->path());
}
}
@@ -1855,7 +1856,7 @@ vfs::recursive_directory_iterator::recursive_directory_iterator(FileSystem &FS_,
std::error_code &EC)
: FS(&FS_) {
directory_iterator I = FS->dir_begin(Path, EC);
- if (I != directory_iterator()) {
+ if (!EC && I != directory_iterator()) {
State = std::make_shared<IterState>();
State->push(I);
}
@@ -1868,6 +1869,8 @@ recursive_directory_iterator::increment(std::error_code &EC) {
vfs::directory_iterator End;
if (State->top()->isDirectory()) {
vfs::directory_iterator I = FS->dir_begin(State->top()->getName(), EC);
+ if (EC)
+ return *this;
if (I != End) {
State->push(I);
return *this;