This fixes some uninitialized members in the filesystem::recursive_directory_iterator default constructor.
Tested x86_64-linux, committed to trunk. Backports to follow soon.
commit 2b1c32ec504886625dae53274b14f86e2082a636 Author: Jonathan Wakely <jwak...@redhat.com> Date: Mon May 9 11:01:59 2016 +0100 libstdc++/71004 fix recursive_directory_iterator default constructor PR libstdc++/71004 * include/experimental/bits/fs_dir.h (recursive_directory_iterator): Initialize scalar member variables in default constructor. * testsuite/experimental/filesystem/iterators/ recursive_directory_iterator.cc: Teste default construction. diff --git a/libstdc++-v3/include/experimental/bits/fs_dir.h b/libstdc++-v3/include/experimental/bits/fs_dir.h index 4e28c8e..f128cce 100644 --- a/libstdc++-v3/include/experimental/bits/fs_dir.h +++ b/libstdc++-v3/include/experimental/bits/fs_dir.h @@ -301,8 +301,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 struct _Dir_stack; std::shared_ptr<_Dir_stack> _M_dirs; - directory_options _M_options; - bool _M_pending; + directory_options _M_options = {}; + bool _M_pending = false; }; inline recursive_directory_iterator diff --git a/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc b/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc index 5d2e45b..a263602 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc @@ -97,6 +97,16 @@ test01() remove_all(p, ec); } +void +test02() +{ + // libstdc++71004 + const fs::recursive_directory_iterator it; + assert( it.options() == fs::directory_options{} ); + assert( it.depth() == 0 ); + assert(it.recursion_pending() == false); +} + int main() {