summaryrefslogtreecommitdiffstats
path: root/libcxx/src/experimental/filesystem
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-06-17 22:22:37 +0000
committerEric Fiselier <eric@efcs.ca>2016-06-17 22:22:37 +0000
commite32264a4c092588d395b80be339eaed3565d423d (patch)
treeee98186fca0f0dd0fb53ea510fa1176a914a4ac2 /libcxx/src/experimental/filesystem
parent0114bb5aa0a5e5fbaddc7aeadac7a790737e9a0e (diff)
downloadbcm5719-llvm-e32264a4c092588d395b80be339eaed3565d423d.tar.gz
bcm5719-llvm-e32264a4c092588d395b80be339eaed3565d423d.zip
Fix bugs in recursive_directory_iterator implementation and tests.
There are two fixes in this patch: * Fix bug where the constructor of recursive_directory_iterator did not reset the error code if no failure occurred. * Fix tests were dependent on the iteration order of the test directories. llvm-svn: 273060
Diffstat (limited to 'libcxx/src/experimental/filesystem')
-rw-r--r--libcxx/src/experimental/filesystem/directory_iterator.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/libcxx/src/experimental/filesystem/directory_iterator.cpp b/libcxx/src/experimental/filesystem/directory_iterator.cpp
index 059c4124a47..cd9d8679f9c 100644
--- a/libcxx/src/experimental/filesystem/directory_iterator.cpp
+++ b/libcxx/src/experimental/filesystem/directory_iterator.cpp
@@ -165,6 +165,7 @@ recursive_directory_iterator::recursive_directory_iterator(const path& p,
directory_options opt, error_code *ec)
: __imp_(nullptr), __rec_(true)
{
+ if (ec) ec->clear();
std::error_code m_ec;
__dir_stream new_s(p, opt, m_ec);
if (m_ec) set_or_throw(m_ec, ec, "recursive_directory_iterator", p);
@@ -226,6 +227,8 @@ void recursive_directory_iterator::__advance(error_code* ec) {
__imp_.reset();
if (m_ec)
set_or_throw(m_ec, ec, "recursive_directory_iterator::operator++()");
+ else if (ec)
+ ec->clear();
}
bool recursive_directory_iterator::__try_recursion(error_code *ec) {
OpenPOWER on IntegriCloud