}
static void
-delete_node(trbt_node_t *node, int from_destructor)
+delete_node(trbt_node_t *node)
{
trbt_node_t *parent, *child, dc;
trbt_node_t *temp = NULL;
/* then delete the temp node.
this node is guaranteed to have at least one leaf
child */
- delete_node(temp, from_destructor);
+ delete_node(temp);
goto finished;
}
}
finished:
- if (!from_destructor) {
- talloc_free(node);
- }
-
/* if we came from a destructor and temp!=NULL this means we
did the node-swap but now the tree still contains the old
node which was freed in the destructor. Not good.
*/
- if (from_destructor && temp) {
+ if (temp) {
temp->key32 = node->key32;
temp->rb_color = node->rb_color;
*/
static int node_destructor(trbt_node_t *node)
{
- delete_node(node, 1);
+ delete_node(node);
return 0;
}
while(node){
if(key==node->key32){
- delete_node(node, 0);
+ talloc_free(node);
return;
}
if(key<node->key32){