]> git.ozlabs.org Git - ccan/blobdiff - ccan/rbtree/rbtree.c
array: spelling fixes.
[ccan] / ccan / rbtree / rbtree.c
index 753935b3dcc73647b065df9a28cd1716416505d6..f0a74edb6317ed0f6b02d880f81ce9f15e8b70c6 100644 (file)
 #include <ccan/rbtree/rbtree.h>
 
 static void
-tree_destructor_traverse_node(TALLOC_CTX *mem_ctx, trbt_node_t *node)
+tree_destructor_traverse_node(trbt_node_t *node)
 {
        talloc_set_destructor(node, NULL);
        if (node->left) {
-               tree_destructor_traverse_node(mem_ctx, node->left);
+               tree_destructor_traverse_node(node->left);
        }
        if (node->right) {
-               tree_destructor_traverse_node(mem_ctx, node->right);
+               tree_destructor_traverse_node(node->right);
        }
-       talloc_steal(mem_ctx, node);
+       talloc_free(node);
 }
 
 /*
@@ -36,7 +36,6 @@ tree_destructor_traverse_node(TALLOC_CTX *mem_ctx, trbt_node_t *node)
  */
 static int tree_destructor(trbt_tree_t *tree)
 {
-       TALLOC_CTX *tmp_ctx;
        trbt_node_t *node;
 
        if (tree == NULL) {
@@ -48,17 +47,14 @@ static int tree_destructor(trbt_tree_t *tree)
                return 0;
        }
 
-       /* traverse the tree and remove the node destructor and steal
-          the node to the temporary context.
+       /* traverse the tree and remove the node destructor then delete it.
           we dont want to use the existing destructor for the node
           since that will remove the nodes one by one from the tree.
           since the entire tree will be completely destroyed we dont care
           if it is inconsistent or unbalanced while freeing the
           individual nodes
        */
-       tmp_ctx = talloc_new(NULL);
-       tree_destructor_traverse_node(tmp_ctx, node);
-       talloc_free(tmp_ctx);
+       tree_destructor_traverse_node(node);
 
        return 0;
 }
@@ -675,6 +671,8 @@ trbt_insert32(trbt_tree_t *tree, uint32_t key, void *data)
                                trbt_node_t *new_node;
 
                                new_node = trbt_create_node(tree, node, key, data);
+                               if (!new_node)
+                                       return NULL;
                                node->left=new_node;
                                node=new_node;
 
@@ -689,6 +687,8 @@ trbt_insert32(trbt_tree_t *tree, uint32_t key, void *data)
                                trbt_node_t *new_node;
 
                                new_node = trbt_create_node(tree, node, key, data);
+                               if (!new_node)
+                                       return NULL;
                                node->right=new_node;
                                node=new_node;
                                break;