From: khizmax Date: Fri, 13 Mar 2015 08:24:39 +0000 (+0300) Subject: Fixed memory leak X-Git-Tag: v2.1.0~305^2~8 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=commitdiff_plain;h=4572f66012826eae20d427bc681c5592ef06422c Fixed memory leak --- diff --git a/cds/container/impl/bronson_avltree_map_rcu.h b/cds/container/impl/bronson_avltree_map_rcu.h index d44c64ea..94fe48ad 100644 --- a/cds/container/impl/bronson_avltree_map_rcu.h +++ b/cds/container/impl/bronson_avltree_map_rcu.h @@ -142,6 +142,7 @@ namespace cds { namespace container { static void free_node( node_type * pNode ) { // Free node without disposer + assert( !pNode->is_valued( memory_model::memory_order_relaxed )); cxx_allocator().Delete( pNode ); } @@ -1229,6 +1230,9 @@ namespace cds { namespace container { || child( pNode, nDir, memory_model::memory_order_relaxed ) != nullptr ) { if ( c_bRelaxedInsert ) { + mapped_type pVal = pNew->m_pValue.load( memory_model::memory_order_relaxed ); + pNew->m_pValue.store( nullptr, memory_model::memory_order_relaxed ); + free_value( pVal ); free_node( pNew ); m_stat.onRelaxedInsertFailed(); }