summaryrefslogtreecommitdiff
path: root/source3/registry/reg_objects.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/registry/reg_objects.c')
-rw-r--r--source3/registry/reg_objects.c39
1 files changed, 2 insertions, 37 deletions
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;