diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2012-11-25 02:04:00 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2012-11-25 02:04:00 +0000 |
commit | 8abda3c25ae2cd0c253e09739ce3a9bad7d364c8 (patch) | |
tree | 31b4ab70a672e0782e03a1942d2b79e2abe6968c /ui/gtk/tcp_graph.c | |
parent | 6851b6dee2c581b492e28b0e3c7cc7cf06f5e328 (diff) |
Needed to match up correct element lists for data + control for tcptrace
graphs.
Should really make clearer the way lists of elements are allocated and
the final next is assigned to NULL...
svn path=/trunk/; revision=46174
Diffstat (limited to 'ui/gtk/tcp_graph.c')
-rw-r--r-- | ui/gtk/tcp_graph.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/ui/gtk/tcp_graph.c b/ui/gtk/tcp_graph.c index c2e00bd760..1b68e2666f 100644 --- a/ui/gtk/tcp_graph.c +++ b/ui/gtk/tcp_graph.c @@ -2111,16 +2111,6 @@ static void graph_element_lists_free (struct graph *g) { struct element_list *list, *next_list; -#if 0 - for (list=g->elists; list; list=list->next) - g_free (list->elements); - while (g->elists->next) { - list = g->elists->next->next; - g_free (g->elists->next); - g->elists->next = list; - } -#endif - for (list=g->elists; list; list=next_list) { g_free (list->elements); next_list = list->next; @@ -4183,7 +4173,6 @@ static void tseq_stevens_toggle_time_origin (struct graph *g) static void tseq_tcptrace_read_config (struct graph *g) { - /* Black */ g->s.tseq_tcptrace.seq_color.pixel=0; g->s.tseq_tcptrace.seq_color.red=0; @@ -4216,6 +4205,7 @@ static void tseq_tcptrace_read_config (struct graph *g) g->s.tseq_tcptrace.flags = 0; + /* Allocate first list, but not elements */ g->elists->next = (struct element_list * ) g_malloc (sizeof (struct element_list)); g->elists->next->next = NULL; @@ -4249,22 +4239,23 @@ static void tseq_tcptrace_make_elmtlist (struct graph *g) debug(DBS_FENTRY) puts ("tseq_tcptrace_make_elmtlist()"); - if (g->elists->elements == NULL) { - /* 4 elements per ACK, but only one for each SACK range */ - int n = 1 + 4*get_num_acks(g, &num_sack_ranges); - n += num_sack_ranges; - e1 = elements1 = (struct element * )g_malloc (n*sizeof (struct element)); + if (g->elists->elements == NULL ) { + /* 3 elements per data segment */ + int n = 1 + 3*get_num_dsegs(g); + e0 = elements0 = (struct element * )g_malloc (n*sizeof (struct element)); } else { /* Existing array */ - e1 = elements1 = g->elists->elements; + e0 = elements0 = g->elists->elements; } - if (g->elists->next->elements == NULL ) { - int n = 1 + 3*get_num_dsegs(g); - e0 = elements0 = (struct element * )g_malloc (n*sizeof (struct element)); + if (g->elists->next->elements == NULL) { + /* 4 elements per ACK, but only one for each SACK range */ + int n = 1 + 4*get_num_acks(g, &num_sack_ranges); + n += num_sack_ranges; + e1 = elements1 = (struct element * )g_malloc (n*sizeof (struct element)); } else { /* Existing array */ - e0 = elements0 = g->elists->next->elements; + e1 = elements1 = g->elists->next->elements; } xx0 = g->bounds.x0; @@ -4418,6 +4409,7 @@ static void tseq_tcptrace_make_elmtlist (struct graph *g) g->elists->elements = elements0; g->elists->next->elements = elements1; + g->elists->next->next = NULL; } static void tseq_tcptrace_toggle_seq_origin (struct graph *g) |