This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix safe iterator inconsistent assertion


Working on iterator == operator I noticed that a comparison in _Safe_iterator was inconsistent.

    * include/debug/debug.h
    (_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
    Compare __x base iterator with a default initialized iterator of the
    same type.

Tested under linux x86_64.

François

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 261830)
+++ ChangeLog	(working copy)
@@ -1,3 +1,10 @@
+2018-06-21  François Dumont  <fdumont@gcc.gnu.org>
+
+	* include/debug/debug.h
+	(_Safe_iterator<>(const _Safe_iterator<_MutableIterator,>& __x)):
+	Compare __x base iterator with a default initialized iterator of the
+	same type.
+
 2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
 
 	PR libstdc++/70966
Index: include/debug/safe_iterator.h
===================================================================
--- include/debug/safe_iterator.h	(revision 261830)
+++ include/debug/safe_iterator.h	(working copy)
@@ -180,7 +180,7 @@
 	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
 	  // DR 408. Is vector<reverse_iterator<char*> > forbidden?
 	  _GLIBCXX_DEBUG_VERIFY(!__x._M_singular()
-				|| __x.base() == _Iterator(),
+				|| __x.base() == _MutableIterator(),
 				_M_message(__msg_init_const_singular)
 				._M_iterator(*this, "this")
 				._M_iterator(__x, "other"));

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]