[PATH][_GLIBCXX_DEBUG] Fix unordered container merge
François Dumont
frs.dumont@gmail.com
Thu Nov 11 21:33:27 GMT 2021
On 11/11/21 9:41 pm, Jonathan Wakely wrote:
>
>
> On Wed, 10 Nov 2021 at 11:55, Jonathan Wakely <jwakely@redhat.com
> <mailto:jwakely@redhat.com>> wrote:
>
>
>
> On Tue, 9 Nov 2021 at 16:25, Jonathan Wakely <jwakely@redhat.com
> <mailto:jwakely@redhat.com>> wrote:
>
>
>
> On Mon, 8 Nov 2021 at 21:36, François Dumont
> <frs.dumont@gmail.com <mailto:frs.dumont@gmail.com>> wrote:
>
> Yet another version this time with only 1 guard
> implementation. The predicate to invalidate the safe
> iterators has been externalized.
>
> Ok to commit ?
>
>
> I like this version a lot - thanks for persisting with it.
>
>
>
> I'm seeing new failures with this:
>
> make check
> RUNTESTFLAGS="conformance.exp=23_containers/*/invalidation/*
> --target_board=unix/-D_GLIBCXX_DEBUG/-std=gnu++98"
>
> FAIL: 23_containers/deque/debug/invalidation/1.cc (test for excess
> errors)
> FAIL: 23_containers/list/debug/invalidation/1.cc (test for excess
> errors)
> FAIL: 23_containers/map/debug/invalidation/1.cc (test for excess
> errors)
> FAIL: 23_containers/multimap/debug/invalidation/1.cc (test for
> excess errors)
> FAIL: 23_containers/multiset/debug/invalidation/1.cc (test for
> excess errors)
> FAIL: 23_containers/set/debug/invalidation/1.cc (test for excess
> errors)
> FAIL: 23_containers/vector/debug/invalidation/1.cc (test for
> excess errors)
>
>
> It's caused by:
>
> --- a/libstdc++-v3/include/debug/safe_container.h
> +++ b/libstdc++-v3/include/debug/safe_container.h
> @@ -78,7 +78,6 @@namespace __gnu_debug
> { }
> #endif
>
> - public:
> // Copy assignment invalidate all iterators.
> _Safe_container&
> operator=(const _Safe_container&) _GLIBCXX_NOEXCEPT
>
>
> For C++98 mode that gets called explicitly by the user-provided copy
> assignment operators in the derived class.
>
> I'm testing the attached fix.
>
I am also testing a patch but yours looks nicer so go ahead. I'll just
complete it with some additional cleanup I did to suppress
_Safe_container::_M_safe() and reduce usages of _M_base().
Thanks
More information about the Libstdc++
mailing list