From 104d4eccfc2ea36d9066e70a4c9cdf56ef0fbcb8 Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Thu, 18 Nov 2010 13:22:50 -0500 Subject: - use actual slapi_filter structures to avoid reparsing --- src/format.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/format.c') diff --git a/src/format.c b/src/format.c index a877e35..5b5b650 100644 --- a/src/format.c +++ b/src/format.c @@ -193,7 +193,9 @@ format_free_ref_attr_list(struct format_ref_attr_list **list) for (i = 0; list[i] != NULL; i++) { for (j = 0; j < list[i]->n_links; j++) { free(list[i]->links[j].attribute); - free(list[i]->links[j].filter); + if (list[i]->links[j].filter != NULL) { + slapi_filter_free(list[i]->links[j].filter, TRUE); + } sdn_list = list[i]->links[j].base_sdn_list; format_free_sdn_list(sdn_list); } @@ -243,7 +245,7 @@ format_dup_ref_attr_list(struct format_ref_attr_list **list) } if (list[i]->links[j].filter != NULL) { ret[i]->links[j].filter = - strdup(list[i]->links[j].filter); + slapi_filter_dup(list[i]->links[j].filter); if (ret[i]->links[j].filter == NULL) { format_free_ref_attr_list(ret); return NULL; @@ -292,6 +294,7 @@ format_add_ref_attr_list(struct format_ref_attr_list ***list, const char **names, const char **filters) { struct format_ref_attr_list **ret; + char *ftmp; unsigned int i; int j; if (format_find_ref_attr_list(*list, group, set, names) != NULL) { @@ -330,11 +333,18 @@ format_add_ref_attr_list(struct format_ref_attr_list ***list, return NULL; } if ((filters != NULL) && (filters[j] != NULL)) { - ret[i]->links[j].filter = strdup(names[j]); + ftmp = strdup(filters[j]); + if (ftmp == NULL) { + format_free_ref_attr_list(ret); + return NULL; + } + ret[i]->links[j].filter = slapi_str2filter(ftmp); if (ret[i]->links[j].filter == NULL) { + free(ftmp); format_free_ref_attr_list(ret); return NULL; } + free(ftmp); } ret[i]->links[j].base_sdn_list = NULL; } -- cgit