r25139: Avoid code duplication: let regval_ctr_copyvalue() call regval_ctr_addvalue().
authorMichael Adam <obnox@samba.org>
Thu, 13 Sep 2007 22:36:10 +0000 (22:36 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:30:44 +0000 (12:30 -0500)
This also corrects regval_ctr_copyvalue() in that it cannot create (invalid)
regval containers with dupliacte entries...

Michael

source/registry/reg_objects.c

index 499b7c350fee7a562c9404e326d42b303aa4e687..89fdae7b8c205ad88e9b76548e74270299dd62ff 100644 (file)
@@ -347,43 +347,8 @@ int regval_ctr_addvalue( REGVAL_CTR *ctr, const char *name, uint16 type,
 int regval_ctr_copyvalue( REGVAL_CTR *ctr, REGISTRY_VALUE *val )
 {
        if ( val ) {
-               /* allocate a slot in the array of pointers */
-               
-               if (  ctr->num_values == 0 ) {
-                       ctr->values = TALLOC_P( ctr, REGISTRY_VALUE *);
-               } else {
-                       ctr->values = TALLOC_REALLOC_ARRAY( ctr, ctr->values, REGISTRY_VALUE *, ctr->num_values+1 );
-               }
-
-               if (!ctr->values) {
-                       ctr->num_values = 0;
-                       return 0;
-               }
-
-               /* allocate a new value and store the pointer in the arrya */
-               
-               ctr->values[ctr->num_values] = TALLOC_P( ctr, REGISTRY_VALUE);
-               if (!ctr->values[ctr->num_values]) {
-                       ctr->num_values = 0;
-                       return 0;
-               }
-
-               /* init the value */
-       
-               fstrcpy( ctr->values[ctr->num_values]->valuename, val->valuename );
-               ctr->values[ctr->num_values]->type = val->type;
-               if (val->size) {
-                       ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
-                               ctr, val->data_p, val->size );
-                       if (!ctr->values[ctr->num_values]->data_p) {
-                               ctr->num_values = 0;
-                               return 0;
-                       }
-               } else {
-                       ctr->values[ctr->num_values]->data_p = NULL;
-               }
-               ctr->values[ctr->num_values]->size = val->size;
-               ctr->num_values++;
+               regval_ctr_addvalue(ctr, val->valuename, val->type,
+                                   (char *)val->data_p, val->size);
        }
 
        return ctr->num_values;