New DS 5.x memory management API memory management API memory management API memory management API

This commit is contained in:
Luke Howard 2003-01-22 09:30:47 +00:00
parent 293c765c11
commit 2107a4c1b3
2 changed files with 63 additions and 0 deletions

View File

@ -431,6 +431,65 @@ slapi_ch_free_string( char **ptr )
#endif /* defined(LDAP_SLAPI) */
}
void
slapi_ch_array_free( char **arrayp )
{
#ifdef LDAP_SLAPI
char **p;
if ( arrayp != NULL ) {
for ( p = arrayp; *p != NULL; p++ ) {
slapi_ch_free( (void **)p );
}
slapi_ch_free( (void **)&arrayp );
}
#endif
}
struct berval *
slapi_ch_bvdup(const struct berval *v)
{
#ifdef LDAP_SLAPI
struct berval *bv;
bv = (struct berval *) slapi_ch_malloc( sizeof(struct berval) );
bv->bv_len = v->bv_len;
bv->bv_val = slapi_ch_malloc( bv->bv_len );
AC_MEMCPY( bv->bv_val, v->bv_val, bv->bv_len );
return bv;
#else
return NULL;
#endif
}
struct berval **
slapi_ch_bvecdup(const struct berval **v)
{
#ifdef LDAP_SLAPI
int i;
struct berval **rv;
if ( v == NULL ) {
return NULL;
}
for ( i = 0; v[i] != NULL; i++ )
;
rv = (struct berval **) slapi_ch_malloc( (i + 1) * sizeof(struct berval *) );
for ( i = 0; v[i] != NULL; i++ ) {
rv[i] = slapi_ch_bvdup( v[i] );
}
rv[i] = NULL;
return rv;
#else
return NULL;
#endif
}
char *
slapi_ch_calloc(
unsigned long nelem,

View File

@ -134,6 +134,10 @@ void slapi_ch_free_string( char **s );
char *slapi_ch_calloc( unsigned long nelem, unsigned long size );
char *slapi_ch_realloc( char *block, unsigned long size );
char *slapi_ch_strdup( char *s );
void slapi_ch_array_free( char **arrayp );
struct berval *slapi_ch_bvdup(const struct berval *v);
struct berval **slapi_ch_bvecdup(const struct berval **v);
/*
* FIXME: these two were missing, but widely used in a couple of .c files
*/