regedit: simplify cleanup after loading children
authorChris Davis <cd.rattan@gmail.com>
Tue, 8 Jul 2014 04:30:49 +0000 (21:30 -0700)
committerMichael Adam <obnox@samba.org>
Wed, 1 Oct 2014 12:32:09 +0000 (14:32 +0200)
Signed-off-by: Chris Davis <cd.rattan@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
source3/utils/regedit_treeview.c

index dd4b5cb08cbedad750eba84e863ea03d029709f7..47d92821e8af1b8e821ca0555bf92421d2ad2674 100644 (file)
@@ -274,7 +274,7 @@ WERROR tree_node_load_children(struct tree_node *node)
                        continue;
                }
 
-               array[count] = tree_node_new(node, node, key_name, key);
+               array[count] = tree_node_new(array, node, key_name, key);
                if (array[count] == NULL) {
                        rv = WERR_NOMEM;
                        goto finish;
@@ -286,21 +286,16 @@ WERROR tree_node_load_children(struct tree_node *node)
                TYPESAFE_QSORT(array, count, node_cmp);
 
                for (i = 1, prev = array[0]; i < count; ++i) {
+                       talloc_steal(node, array[i]);
                        tree_node_append(prev, array[i]);
                        prev = array[i];
                }
-               node->child_head = array[0];
+               node->child_head = talloc_steal(node, array[0]);
 
                rv = WERR_OK;
        }
 
 finish:
-       if (!W_ERROR_IS_OK(rv)) {
-               for (i = 0; i < nsubkeys; ++i) {
-                       talloc_free(array[i]);
-               }
-               node->child_head = NULL;
-       }
        talloc_free(array);
 
        return rv;