Slapi_Value * slapi_value_new_value(const Slapi_Value *v) { return slapi_value_dup(v); }
void valuearray_add_valuearray_fast(Slapi_Value ***vals, Slapi_Value **addvals, int nvals, int naddvals, int *maxvals, int exact, /* Don't create an array bigger than needed */ int passin) /* The values are being passed in */ { int i, j; int allocate= 0; int need = nvals + naddvals + 1; if(exact) { /* Create an array exactly the right size. */ if(need>*maxvals) { allocate= need; } } else { if (*maxvals==0) /* empty; create with 4 by default */ { allocate= 4; } else if (need > *maxvals) { /* Exponentially expand the array */ allocate= *maxvals; while ( allocate < need ) { allocate *= 2; } } } if(allocate>0) { if(*vals==NULL) { *vals = (Slapi_Value **) slapi_ch_malloc( allocate * sizeof(Slapi_Value *)); } else { *vals = (Slapi_Value **) slapi_ch_realloc( (char *) *vals, allocate * sizeof(Slapi_Value *)); } *maxvals= allocate; } for ( i = 0, j = 0; i < naddvals; i++) { if ( addvals[i]!=NULL ) { if(passin) { /* We consume the values */ (*vals)[nvals + j] = addvals[i]; } else { /* We copy the values */ (*vals)[nvals + j] = slapi_value_dup(addvals[i]); } j++; } } (*vals)[nvals + j] = NULL; }