X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_vl_lookup.c;h=2ca9ddf8e551bd43691dd9b3f4b5d0f3c54188b9;hb=5523a080010dcb7a61dc0dccc3969a2a048e52f9;hp=a0237841eb43a7aebea172bed7246cd71f0e0bea;hpb=12f249b209d7fa31e3a9d53315e47a2342463e0f;p=collectd.git diff --git a/src/utils_vl_lookup.c b/src/utils_vl_lookup.c index a0237841..2ca9ddf8 100644 --- a/src/utils_vl_lookup.c +++ b/src/utils_vl_lookup.c @@ -26,6 +26,7 @@ #include "collectd.h" + #include #include @@ -381,7 +382,7 @@ static by_type_entry_t *lu_search_by_type (lookup_t *obj, /* {{{ */ } by_type->wildcard_plugin_list = NULL; - by_type->by_plugin_tree = c_avl_create ((void *) strcmp); + by_type->by_plugin_tree = c_avl_create ((int (*) (const void *, const void *)) strcmp); if (by_type->by_plugin_tree == NULL) { ERROR ("utils_vl_lookup: c_avl_create failed."); @@ -495,6 +496,21 @@ static void lu_destroy_user_class_list (lookup_t *obj, /* {{{ */ obj->cb_free_class (user_class_list->entry.user_class); user_class_list->entry.user_class = NULL; +#define CLEAR_FIELD(field) do { \ + if (user_class_list->entry.match.field.is_regex) { \ + regfree (&user_class_list->entry.match.field.regex); \ + user_class_list->entry.match.field.is_regex = 0; \ + } \ +} while (0) + + CLEAR_FIELD (host); + CLEAR_FIELD (plugin); + CLEAR_FIELD (plugin_instance); + CLEAR_FIELD (type); + CLEAR_FIELD (type_instance); + +#undef CLEAR_FIELD + lu_destroy_user_obj (obj, user_class_list->entry.user_obj_list); user_class_list->entry.user_obj_list = NULL; pthread_mutex_destroy (&user_class_list->entry.lock); @@ -549,7 +565,7 @@ lookup_t *lookup_create (lookup_class_callback_t cb_user_class, /* {{{ */ return (NULL); } - obj->by_type_tree = c_avl_create ((void *) strcmp); + obj->by_type_tree = c_avl_create ((int (*) (const void *, const void *)) strcmp); if (obj->by_type_tree == NULL) { ERROR ("utils_vl_lookup: c_avl_create failed.");