diff options
author | Juergen Ributzka <juergen@apple.com> | 2017-03-10 21:46:51 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2017-03-10 21:46:51 +0000 |
commit | bc1c5b1d042bc057c37de0046179b1d510444ff9 (patch) | |
tree | 83f72d762918171999fc5afddc507b9743220922 /clang/lib/Basic/VirtualFileSystem.cpp | |
parent | 3fdfeeed9f2250c6c3b58a60a62d1d7782777e34 (diff) | |
download | llvm-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.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; |