This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PR libstdc++/87872 Avoids iterator transfer on self splice
- From: François Dumont <frs dot dumont at gmail dot com>
- To: "libstdc++ at gcc dot gnu dot org" <libstdc++ at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 6 Nov 2018 10:49:28 +0100
- Subject: PR libstdc++/87872 Avoids iterator transfer on self splice
Here is the patch submitted by John and now fully tested.
PR libstdc++/87872
* include/debug/safe_sequence.tcc
(_Safe_sequence<>::_M_transfer_from_if): Skip transfer to self.
Is it fine to commit it now ?
François
diff --git a/libstdc++-v3/include/debug/safe_sequence.tcc b/libstdc++-v3/include/debug/safe_sequence.tcc
index 12de48cf322..ce9a807e79f 100644
--- a/libstdc++-v3/include/debug/safe_sequence.tcc
+++ b/libstdc++-v3/include/debug/safe_sequence.tcc
@@ -68,6 +68,9 @@ namespace __gnu_debug
_Safe_sequence<_Sequence>::
_M_transfer_from_if(_Safe_sequence& __from, _Predicate __pred)
{
+ if (this == std::__addressof(__from))
+ return;
+
typedef typename _Sequence::iterator iterator;
typedef typename _Sequence::const_iterator const_iterator;