This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[patch] libstdc++/71004 fix recursive_directory_iterator default constructor
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Mon, 9 May 2016 11:09:33 +0100
- Subject: [patch] libstdc++/71004 fix recursive_directory_iterator default constructor
- Authentication-results: sourceware.org; auth=none
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 <jwakely@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()
{