r169: Fix gregedit
authorJelmer Vernooij <jelmer@samba.org>
Sun, 11 Apr 2004 23:34:23 +0000 (23:34 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:51:13 +0000 (12:51 -0500)
source/lib/registry/common/reg_objects.c
source/lib/registry/tools/gregedit.c

index 809829b3e8fa17ced3d15db694c8e9b21573270f..78260e198fd45aa1d2d471488b8b9431f36f4832 100644 (file)
 
 REG_VAL* reg_val_dup( REG_VAL *val )
 {
-       REG_VAL         *copy = NULL;
-       TALLOC_CTX *new_mem_ctx = talloc_init(val->name);
-       
-       if ( !val ) 
-               return NULL;
-       
-       if ( !(copy = talloc( new_mem_ctx, sizeof(REG_VAL) )) ) {
-               DEBUG(0,("dup_registry_value: malloc() failed!\n"));
-               return NULL;
-       }
-       
-       /* copy all the non-pointer initial data */
-       
-       memcpy( copy, val, sizeof(REG_VAL) );
-       if ( val->data_blk ) 
-       {
-               if ( !(copy->data_blk = talloc_memdup( new_mem_ctx, val->data_blk, val->data_len )) ) {
-                       DEBUG(0,("dup_registry_value: memdup() failed for [%d] bytes!\n",
-                               val->data_len));
-                       SAFE_FREE( copy );
-               }
-       }
-       copy->mem_ctx = new_mem_ctx;
-       
-       return copy;    
+       val->ref++;
+       return val;     
 }
 
 /**********************************************************************
index 4fbb1b27058279aef5aadfe097cf27881e4e2f89..0c9084ad3ef3c2f5034e5949a410d188e042c805 100644 (file)
@@ -65,19 +65,20 @@ static void gtk_show_werror(WERROR err)
 
 static void expand_key(GtkTreeView *treeview, GtkTreeIter *parent, GtkTreePath *arg2)
 {
-       GtkTreeIter iter, tmpiter;
+       GtkTreeIter firstiter, iter, tmpiter;
        REG_KEY *k, *sub;
        char *name;
        GValue value;
        WERROR error;
        int i;
 
+    gtk_tree_model_iter_children(GTK_TREE_MODEL(store_keys), &firstiter, parent);
+
     /* See if this row has ever had a name gtk_tree_store_set()'ed to it.
        If not, read the directory contents */
-    gtk_tree_model_get(GTK_TREE_MODEL(store_keys), parent,
-                       0, &name, -1);
+    gtk_tree_model_get(GTK_TREE_MODEL(store_keys), &firstiter, 0, &name, -1);
 
-       if(!name) return;
+       if(name) return;
 
        gtk_tree_model_get(GTK_TREE_MODEL(store_keys), parent, 1, &k, -1);
 
@@ -91,8 +92,7 @@ static void expand_key(GtkTreeView *treeview, GtkTreeIter *parent, GtkTreePath *
            node GTK gets confused and won't expand the parent row. */
 
                if(i == 0) {
-                   gtk_tree_model_iter_children(GTK_TREE_MODEL(store_keys), 
-                                     &iter, parent);
+                       iter = firstiter;
                } else {
                        gtk_tree_store_append(store_keys, &iter, parent);
                }