X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_vl_lookup.c;h=6081c90ef29d24801ce2f36c8062e61be9d2824c;hb=439a2277918a60c04e9606dd3e9ef3d7e8dcd856;hp=a0237841eb43a7aebea172bed7246cd71f0e0bea;hpb=10b10a6718dbb87c6890d4bc821a6e21c8b7b527;p=collectd.git diff --git a/src/utils_vl_lookup.c b/src/utils_vl_lookup.c index a0237841..6081c90e 100644 --- a/src/utils_vl_lookup.c +++ b/src/utils_vl_lookup.c @@ -381,7 +381,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 +495,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 +564,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.");