]> git.sur5r.net Git - openldap/commitdiff
New DS 5.x memory management API memory management API memory management API memory...
authorLuke Howard <lukeh@openldap.org>
Wed, 22 Jan 2003 09:30:47 +0000 (09:30 +0000)
committerLuke Howard <lukeh@openldap.org>
Wed, 22 Jan 2003 09:30:47 +0000 (09:30 +0000)
servers/slapd/slapi/slapi_utils.c
servers/slapd/slapi/slapi_utils.h

index fe15ffd277886848858c3e4b0cdee6e12e49be42..125c8a62c91cedfe32017409e5684037c96b48e8 100644 (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, 
index 5c70db6750fe800ef22b1bcf63ea135264211723..3d2c2d7eabb75abf11214e771d10b122b43bd1b4 100644 (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
  */