diff options
author | Juergen Ributzka <juergen@apple.com> | 2017-03-11 00:14:50 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2017-03-11 00:14:50 +0000 |
commit | 31d01baa9f3a57de8e159f84660d36a042bab5af (patch) | |
tree | d3c89972e79e1076fb09d9c79f2343ff440ba454 /clang/lib/Basic/VirtualFileSystem.cpp | |
parent | d2001dac3f99d998b68d24bb2a9a4eb73f5161e7 (diff) | |
download | llvm-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.cpp | 7 |
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; |