summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2007-09-13 22:36:10 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:30:44 -0500
commitaaa0afaa268e97dafea1ec9b03fa9630880a4fe7 (patch)
treee8ac2bfef5bdf23346e2e43f518b47e898940ce5
parenteacd3140573d1122a3785823e4003bfc6352c431 (diff)
downloadsamba-aaa0afaa268e97dafea1ec9b03fa9630880a4fe7.tar.gz
samba-aaa0afaa268e97dafea1ec9b03fa9630880a4fe7.tar.bz2
samba-aaa0afaa268e97dafea1ec9b03fa9630880a4fe7.zip
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)
-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;