From 93c46dde912e0f393989fd2a3e50dc0349be9631 Mon Sep 17 00:00:00 2001 From: Luis Ontanon Date: Sun, 27 Feb 2005 16:55:24 +0000 Subject: Several fixes to the stats_tree - Avoid creating a copy of every branch at reinitialization this used to cause some GTK warnings and a leakage of tree nodes - propperly check the optarg to avoid getting junk in the filter text this caused a crash svn path=/trunk/; revision=13534 --- epan/stats_tree.c | 7 ++++++- epan/stats_tree.h | 3 +++ epan/stats_tree_priv.h | 1 - 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'epan') diff --git a/epan/stats_tree.c b/epan/stats_tree.c index 24f8df2df1..885b300a20 100644 --- a/epan/stats_tree.c +++ b/epan/stats_tree.c @@ -153,6 +153,7 @@ static void free_stat_node( stat_node* node ) { if(node->st->free_node_pr) node->st->free_node_pr(node); if (node->hash) g_hash_table_destroy(node->hash); + if (node->rng) g_free(node->rng); if (node->name) g_free(node->name); @@ -213,6 +214,9 @@ extern void reinit_stats_tree(void* p) { free_stat_node(child); } + st->root.children = NULL; + st->root.counter = 0; + if (st->init) { st->init(st); } @@ -364,7 +368,8 @@ static stat_node* new_stat_node(stats_tree* st, node->st = (stats_tree*) st; node->hash = with_hash ? g_hash_table_new(g_str_hash,g_str_equal) : NULL; node->parent = NULL; - + node->rng = NULL; + if (as_parent_node) { g_hash_table_insert(st->names, node->name, diff --git a/epan/stats_tree.h b/epan/stats_tree.h index 988c44b09a..a89669f3be 100644 --- a/epan/stats_tree.h +++ b/epan/stats_tree.h @@ -97,6 +97,9 @@ extern int tick_range(stats_tree* st, int parent_id, int value_in_range); +#define tick_range_with_parent_name(st,name,parent_name,value_in_range) \ + tick_range((st),(name),get_parent_id_by_name((st),(parent_name),(value_in_range)) + /* */ extern int create_pivot_node(stats_tree* st, const gchar* name, diff --git a/epan/stats_tree_priv.h b/epan/stats_tree_priv.h index 11472f6cd3..950c4bc1f5 100644 --- a/epan/stats_tree_priv.h +++ b/epan/stats_tree_priv.h @@ -77,7 +77,6 @@ struct _stats_tree { guint8* name; guint8* tapname; - /* is this realy needed? */ char* filter; /* times */ -- cgit v1.2.3