aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/VirtualFileSystem.cpp
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2017-03-11 00:14:50 +0000
committerJuergen Ributzka <juergen@apple.com>2017-03-11 00:14:50 +0000
commit31d01baa9f3a57de8e159f84660d36a042bab5af (patch)
treed3c89972e79e1076fb09d9c79f2343ff440ba454 /clang/lib/Basic/VirtualFileSystem.cpp
parentd2001dac3f99d998b68d24bb2a9a4eb73f5161e7 (diff)
downloadllvm-31d01baa9f3a57de8e159f84660d36a042bab5af.zip
llvm-31d01baa9f3a57de8e159f84660d36a042bab5af.tar.gz
llvm-31d01baa9f3a57de8e159f84660d36a042bab5af.tar.bz2
Revert "Reapply [VFS] Ignore broken symlinks in the directory iterator."
Still broken on Windows and SystemZ bot ... sorry for the noise. llvm-svn: 297533
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;