aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dfilter
diff options
context:
space:
mode:
authorMax Dmitrichenko <dmitrmax@gmail.com>2017-04-19 17:31:32 -0400
committerPeter Wu <peter@lekensteyn.nl>2017-06-01 16:39:00 +0000
commitf45924f2a609801c51ce57752340417c3b7cf6ff (patch)
treeb69ca48e1d892ae63b5b5cf85b06571c37ca6ddb /epan/dfilter
parent83b0e431dca26092fba4730294f279215036369a (diff)
dfilter: fvt_cache use g_hash_table_new_full() API to prevent some memory leaks
Change-Id: I650c1eb1e98c7d2d2c9ec85bb6ec9b75667142a2 Reviewed-on: https://code.wireshark.org/review/21230 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan/dfilter')
-rw-r--r--epan/dfilter/dfilter-macro.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/epan/dfilter/dfilter-macro.c b/epan/dfilter/dfilter-macro.c
index 68af5d0c7e..fd55c4456d 100644
--- a/epan/dfilter/dfilter-macro.c
+++ b/epan/dfilter/dfilter-macro.c
@@ -54,13 +54,6 @@ void dump_dfilter_macro_t(const dfilter_macro_t *m, const char *function, const
#define DUMP_MACRO(m)
#endif
-static gboolean free_value(gpointer k _U_, gpointer v, gpointer u _U_) {
- fvt_cache_entry_t* e = (fvt_cache_entry_t*)v;
- wmem_free(NULL, e->repr);
- g_free(e);
- return TRUE;
-}
-
static gboolean fvt_cache_cb(proto_node * node, gpointer data _U_) {
field_info* finfo = PNODE_FINFO(node);
fvt_cache_entry_t* e;
@@ -86,8 +79,15 @@ static gboolean fvt_cache_cb(proto_node * node, gpointer data _U_) {
return FALSE;
}
+static void dfilter_free_fvt_entry(gpointer v)
+{
+ fvt_cache_entry_t* e = (fvt_cache_entry_t*)v;
+ wmem_free(NULL, e->repr);
+ g_free(e);
+}
+
void dfilter_macro_build_ftv_cache(void* tree_root) {
- g_hash_table_foreach_remove(fvt_cache,free_value,NULL);
+ g_hash_table_remove_all(fvt_cache);
proto_tree_traverse_post_order((proto_tree *)tree_root, fvt_cache_cb, NULL);
}
@@ -587,7 +587,7 @@ void dfilter_macro_init(void) {
NULL,
uat_fields);
- fvt_cache = g_hash_table_new(g_str_hash,g_str_equal);
+ fvt_cache = g_hash_table_new_full(g_str_hash,g_str_equal, NULL, dfilter_free_fvt_entry);
}
void dfilter_macro_get_uat(uat_t **dfmu_ptr_ptr) {