summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/utils/regedit_treeview.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/source3/utils/regedit_treeview.c b/source3/utils/regedit_treeview.c
index dd4b5cb08c..47d92821e8 100644
--- a/source3/utils/regedit_treeview.c
+++ b/source3/utils/regedit_treeview.c
@@ -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;