Index: main/config.c =================================================================== --- main/config.c (revision 240769) +++ main/config.c (working copy) @@ -183,6 +183,8 @@ int max_include_level; }; +static void ast_destroy_comment(struct ast_comment **comment); + struct ast_variable *ast_variable_new(const char *name, const char *value) { struct ast_variable *variable; @@ -218,6 +220,8 @@ while(v) { vn = v; v = v->next; + ast_destroy_comment(&vn->precomments); + ast_destroy_comment(&vn->sameline); free(vn); } } @@ -344,21 +348,24 @@ config->current = category; } -static void ast_destroy_comments(struct ast_category *cat) +static void ast_destroy_comment(struct ast_comment **comment) { struct ast_comment *n, *p; - for (p=cat->precomments; p; p=n) { + + for (p = *comment; p; p = n) { n = p->next; free(p); } - for (p=cat->sameline; p; p=n) { - n = p->next; - free(p); - } - cat->precomments = NULL; - cat->sameline = NULL; + + *comment = NULL; } +static void ast_destroy_comments(struct ast_category *cat) +{ + ast_destroy_comment(&cat->precomments); + ast_destroy_comment(&cat->sameline); +} + static void ast_destroy_template_list(struct ast_category *cat) { struct ast_category_template_instance *x;