Skip to content
Snippets Groups Projects
  • tromey's avatar
    e2077304
    Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp · e2077304
    tromey authored
    When a node is removed from a splay tree, the splay tree was
    not using the function splay_tree_delete_key_fn to release the key.
    This was causing a leak, fixed by Tom Tromey.
    
    This patch fixes another key leak, that happens when a key equal to
    a key already present is inserted.  In such a case, we have to release
    the old KEY.
    Note that this is based on the assumption that the caller always
    allocates a new KEY when doing an insert.
    
    Also, clarify the documentation about when the release functions are
    called.
    
    2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* splay-tree.h (splay_tree_delete_key_fn): Update comment.
    	(splay_tree_delete_value_fn): Likewise.
    
    libiberty/ChangeLog
    2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* splay-tree.c (splay_tree_insert): Also release old KEY in case
    	of insertion of a key equal to an already present key.
    	(splay_tree_new_typed_alloc): Update comment.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268793 138bc75d-0d04-0410-961f-82ee72b054a4
    e2077304
    History
    Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp
    tromey authored
    When a node is removed from a splay tree, the splay tree was
    not using the function splay_tree_delete_key_fn to release the key.
    This was causing a leak, fixed by Tom Tromey.
    
    This patch fixes another key leak, that happens when a key equal to
    a key already present is inserted.  In such a case, we have to release
    the old KEY.
    Note that this is based on the assumption that the caller always
    allocates a new KEY when doing an insert.
    
    Also, clarify the documentation about when the release functions are
    called.
    
    2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* splay-tree.h (splay_tree_delete_key_fn): Update comment.
    	(splay_tree_delete_value_fn): Likewise.
    
    libiberty/ChangeLog
    2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* splay-tree.c (splay_tree_insert): Also release old KEY in case
    	of insertion of a key equal to an already present key.
    	(splay_tree_new_typed_alloc): Update comment.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268793 138bc75d-0d04-0410-961f-82ee72b054a4