aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorLuis Ontanon <luis.ontanon@gmail.com>2005-02-27 16:55:24 +0000
committerLuis Ontanon <luis.ontanon@gmail.com>2005-02-27 16:55:24 +0000
commit93c46dde912e0f393989fd2a3e50dc0349be9631 (patch)
tree10e8a934441d70617b5b64fd760887800706176f /epan
parentf2375c312737476024e659fa6d965a4c0580ed50 (diff)
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
Diffstat (limited to 'epan')
-rw-r--r--epan/stats_tree.c7
-rw-r--r--epan/stats_tree.h3
-rw-r--r--epan/stats_tree_priv.h1
3 files changed, 9 insertions, 2 deletions
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 */