add anlist_free

This commit is contained in:
Pierangelo Masarati 2007-08-27 07:11:32 +00:00
parent 2082935657
commit 62504d7ef0
2 changed files with 23 additions and 4 deletions

View 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;

View 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 ));