From aaa0afaa268e97dafea1ec9b03fa9630880a4fe7 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Thu, 13 Sep 2007 22:36:10 +0000 Subject: r25139: Avoid code duplication: let regval_ctr_copyvalue() call regval_ctr_addvalue(). This also corrects regval_ctr_copyvalue() in that it cannot create (invalid) regval containers with dupliacte entries... Michael (This used to be commit 2daaaaa835078c543fa12cd1819e8a3d86cf6e5e) --- source3/registry/reg_objects.c | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) (limited to 'source3') diff --git a/source3/registry/reg_objects.c b/source3/registry/reg_objects.c index 499b7c350f..89fdae7b8c 100644 --- a/source3/registry/reg_objects.c +++ b/source3/registry/reg_objects.c @@ -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; -- cgit