This is the mail archive of the libstdc++@sourceware.cygnus.com mailing list for the libstdc++ project.


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

re: insert_unique with hint bug



John,
This looks like a bug that is still present in SGI STL 3.20, and in
current v-3 snapshots. Here's an updated version of your patch, which
could also be applied to the egcs-1.1 (and later) sources.

If it's ok with you, and nobody else has any objections, I'll check it in
later today.

-benjamin


1999-06-24 Benjamin Kosnik <bkoz@tintin.cygnus.com>
           John Potter  <jpotter@eagle.lhup.edu>

	* stl/bits/stl_tree.h (insert_equal): Fix.


Index: stl_tree.h
===================================================================
RCS file: /cvs/libstdc++/libstdc++/stl/bits/stl_tree.h,v
retrieving revision 1.9
diff -c -p -r1.9 stl_tree.h
*** stl_tree.h	1999/02/10 01:00:36	1.9
--- stl_tree.h	1999/06/24 19:33:46
*************** _Rb_tree<_Key, _Val, _KeyOfValue, _Compa
*** 937,943 ****
  {
    if (__position._M_node == _M_header->_M_left) { // begin()
      if (size() > 0 && 
!         _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node)))
        return _M_insert(__position._M_node, __position._M_node, __v);
      // first argument just needs to be non-null 
      else
--- 937,943 ----
  {
    if (__position._M_node == _M_header->_M_left) { // begin()
      if (size() > 0 && 
!        ! _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v)))
        return _M_insert(__position._M_node, __position._M_node, __v);
      // first argument just needs to be non-null 
      else
*************** _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,
*** 970,976 ****
  {
    if (__position._M_node == _M_header->_M_left) { // begin()
      if (size() > 0 && 
!         _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node)))
        return _M_insert(__position._M_node, __position._M_node, __v);
      // first argument just needs to be non-null 
      else
--- 970,976 ----
  {
    if (__position._M_node == _M_header->_M_left) { // begin()
      if (size() > 0 && 
!        ! _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v)))
        return _M_insert(__position._M_node, __position._M_node, __v);
      // first argument just needs to be non-null 
      else


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