+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;
_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);