summaryrefslogtreecommitdiff
path: root/ui/gtk/packet_win.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2012-06-10 22:03:17 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2012-06-10 22:03:17 +0000
commita2bb94c3b33d53f42534aceb7cc67aab1d1fb1f9 (patch)
tree2a200d67e60dc81e264abe06f48848008236b1dc /ui/gtk/packet_win.c
parent339bedb75ce2ca52993d119d151ed2107eb508bd (diff)
downloadwireshark-a2bb94c3b33d53f42534aceb7cc67aab1d1fb1f9.tar.gz
Clear GtkTreeStore before freeing edt
When building current data for packet details treeview we store two things. - Generated string with item label - Pointer to node field_info structure After epan_dissect_{free, cleanup} pointer to field_info node is no longer valid so we should clear GtkTreeStore before freeing. svn path=/trunk/; revision=43188
Diffstat (limited to 'ui/gtk/packet_win.c')
-rw-r--r--ui/gtk/packet_win.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ui/gtk/packet_win.c b/ui/gtk/packet_win.c
index dd2921e1ab..fdd0bcaa2d 100644
--- a/ui/gtk/packet_win.c
+++ b/ui/gtk/packet_win.c
@@ -684,6 +684,7 @@ edit_pkt_tree_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTre
/* DataPtr->pseudo_header = data.pseudo_header; */
memcpy(DataPtr->pd, data.pd, DataPtr->frame->cap_len);
+ proto_tree_draw(NULL, DataPtr->tree_view);
epan_dissect_cleanup(&(DataPtr->edt));
epan_dissect_init(&(DataPtr->edt), TRUE, TRUE);
epan_dissect_run(&(DataPtr->edt), &DataPtr->pseudo_header, DataPtr->pd, DataPtr->frame, NULL);
@@ -806,6 +807,7 @@ edit_pkt_win_key_pressed_cb(GtkWidget *win _U_, GdkEventKey *event, gpointer use
/* redissect if changed */
if (data.val != -1) {
/* XXX, can be optimized? */
+ proto_tree_draw(NULL, DataPtr->tree_view);
epan_dissect_cleanup(&(DataPtr->edt));
epan_dissect_init(&(DataPtr->edt), TRUE, TRUE);
epan_dissect_run(&(DataPtr->edt), &DataPtr->pseudo_header, DataPtr->pd, DataPtr->frame, NULL);
@@ -841,6 +843,7 @@ edit_pkt_destroy_new_window(GObject *object _U_, gpointer user_data)
struct PacketWinData *DataPtr = user_data;
detail_windows = g_list_remove(detail_windows, DataPtr);
+ proto_tree_draw(NULL, DataPtr->tree_view);
epan_dissect_cleanup(&(DataPtr->edt));
g_free(DataPtr);
@@ -990,6 +993,7 @@ destroy_new_window(GObject *object _U_, gpointer user_data)
struct PacketWinData *DataPtr = user_data;
detail_windows = g_list_remove(detail_windows, DataPtr);
+ proto_tree_draw(NULL, DataPtr->tree_view);
epan_dissect_cleanup(&(DataPtr->edt));
g_free(DataPtr->pd);
g_free(DataPtr);