Another version of this patch with just a new test case showing what wrong code was unnoticed previously by the _GLIBCXX_DEBUG mode. On 04/08/22 22:56, François Dumont wrote: > This an old patch I had prepared a long time ago, I don't think I ever > submitted it. > >     libstdc++: [_GLIBCXX_DEBUG] Do not consider detached iterators as > value-initialized > >     An attach iterator has its _M_version set to something != 0. This > value shall be preserved >     when detaching it so that the iterator does not look like a value > initialized one. > >     libstdc++-v3/ChangeLog: > >             * include/debug/formatter.h (__singular_value_init): New > _Iterator_state enum entry. >             (_Parameter<>(const _Safe_iterator<>&, const char*, > _Is_iterator)): Check if iterator >             parameter is value-initialized. >             (_Parameter<>(const _Safe_local_iterator<>&, const char*, > _Is_iterator)): Likewise. >             * include/debug/safe_iterator.h > (_Safe_iterator<>::_M_value_initialized()): New. Adapt >             checks. >             * include/debug/safe_local_iterator.h > (_Safe_local_iterator<>::_M_value_initialized()): New. >             Adapt checks. >             * src/c++11/debug.cc (_Safe_iterator_base::_M_reset): Do > not reset _M_version. >             (print_field(PrintContext&, const _Parameter&, const > char*)): Adapt state_names. >             * testsuite/23_containers/deque/debug/iterator1_neg.cc: > New test. >             * testsuite/23_containers/deque/debug/iterator2_neg.cc: > New test. >             * > testsuite/23_containers/forward_list/debug/iterator1_neg.cc: New test. >             * > testsuite/23_containers/forward_list/debug/iterator2_neg.cc: New test. > > Tested under Linux x86_64 _GLIBCXX_DEBUG mode. > > Ok to commit ? > > François