]> git.sur5r.net Git - openldap/commitdiff
add anlist_free
authorPierangelo Masarati <ando@openldap.org>
Mon, 27 Aug 2007 07:11:32 +0000 (07:11 +0000)
committerPierangelo Masarati <ando@openldap.org>
Mon, 27 Aug 2007 07:11:32 +0000 (07:11 +0000)
servers/slapd/ad.c
servers/slapd/proto-slap.h

index 4dcce9372e0ec8b10ddb79c7c3e2ce6cf242e408..0e79845f37ad7fc6787eb2fab0c2916daf188f2b 100644 (file)
@@ -963,10 +963,8 @@ str2anlist( AttributeName *an, char *in, const char *brkstr )
        return( an );
 
 reterr:
-       for ( i = 0; an[i].an_name.bv_val; i++ ) {
-               free( an[i].an_name.bv_val );
-       }
-       free( an );
+       anlist_free( an, 1, NULL );
+
        /*
         * overwrites input string
         * on error!
@@ -976,6 +974,24 @@ reterr:
        return NULL;
 }
 
+void
+anlist_free( AttributeName *an, int freename, void *ctx )
+{
+       if ( an == NULL ) {
+               return;
+       }
+
+       if ( freename ) {
+               int     i;
+
+               for ( i = 0; an[i].an_name.bv_val; i++ ) {
+                       ber_memfree_x( an[i].an_name.bv_val, ctx );
+               }
+       }
+
+       ber_memfree_x( an, ctx );
+}
+
 char **anlist2charray_x( AttributeName *an, int dup, void *ctx )
 {
     char **attrs;
index 5d4bc930d55bb99890293b640cee6e0122884726..e3fae5ded0462e31926b9080827a54058f1be69b 100644 (file)
@@ -168,6 +168,9 @@ LDAP_SLAPD_F (AttributeDescription *) ad_find_tags LDAP_P((
 
 LDAP_SLAPD_F (AttributeName *) str2anlist LDAP_P(( AttributeName *an,
        char *str, const char *brkstr ));
+LDAP_SLAPD_F (void) anlist_free LDAP_P(( AttributeName *an,
+       int freename, void *ctx ));
+
 LDAP_SLAPD_F (char **) anlist2charray_x LDAP_P((
                                                                        AttributeName *an, int dup, void *ctx ));
 LDAP_SLAPD_F (char **) anlist2charray LDAP_P(( AttributeName *an, int dup ));