stl_tree.h (_Rb_tree<>::_M_insert): Don't leak memory if _M_key_compare throws.

2005-02-26  Earl Chew  <earl_chew@agilent.com>
	    Christopher Jefferson  <chris@bubblescope.net>

	* include/bits/stl_tree.h (_Rb_tree<>::_M_insert): Don't leak
	memory if _M_key_compare throws.

Co-Authored-By: Chris Jefferson <chris@bubblescope.net>

From-SVN: r95597
This commit is contained in:
Earl Chew 2005-02-26 23:34:36 +00:00 committed by Paolo Carlini
parent 5395b47b3c
commit 7320b491ec
2 changed files with 10 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2005-02-26 Earl Chew <earl_chew@agilent.com>
Christopher Jefferson <chris@bubblescope.net>
* include/bits/stl_tree.h (_Rb_tree<>::_M_insert): Don't leak
memory if _M_key_compare throws.
2005-02-25 Paolo Carlini <pcarlini@suse.de>
* include/tr1/type_traits: Add the trivial is_union and is_class;

View File

@ -786,12 +786,11 @@ namespace std
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_insert(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
{
_Link_type __z = _M_create_node(__v);
bool __insert_left;
bool __insert_left = (__x != 0 || __p == _M_end()
|| _M_impl._M_key_compare(_KeyOfValue()(__v),
_S_key(__p)));
__insert_left = (__x != 0 || __p == _M_end()
|| _M_impl._M_key_compare(_KeyOfValue()(__v),
_S_key(__p)));
_Link_type __z = _M_create_node(__v);
_Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
this->_M_impl._M_header);