diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2013-06-25 18:27:31 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2013-06-25 18:27:31 +0000 |
commit | f0c9b34b5522128bee10181748c1f9bb1bd48bb3 (patch) | |
tree | 1afe1193dded2f0ab3d9a8270c6347203c4550b4 /ui/gtk/packet_list_store.c | |
parent | f56d9b49b3f108efbf9bd8aa9baac3531ed4a7ea (diff) | |
download | wireshark-f0c9b34b5522128bee10181748c1f9bb1bd48bb3.tar.gz |
Allocate memory for col_text[_len] when really needed
remove columnized bit, now the same can be done with col_text.
svn path=/trunk/; revision=50144
Diffstat (limited to 'ui/gtk/packet_list_store.c')
-rw-r--r-- | ui/gtk/packet_list_store.c | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/ui/gtk/packet_list_store.c b/ui/gtk/packet_list_store.c index 435948942f..d91fdd6033 100644 --- a/ui/gtk/packet_list_store.c +++ b/ui/gtk/packet_list_store.c @@ -71,8 +71,6 @@ typedef struct _PacketListRecord { /** position within the visible array */ gint visible_pos; - /** Has this record been columnized? */ - guint columnized : 1; /** Has this record been colorized? */ guint colorized : 1; @@ -131,7 +129,7 @@ static gboolean packet_list_sortable_has_default_sort_func(GtkTreeSortable *sortable); static void packet_list_sortable_init(GtkTreeSortableIface *iface); static void packet_list_resort(PacketList *packet_list); -static void packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord *record, gboolean dissect_columns, gboolean dissect_color ); +static void packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord *record, gboolean dissect_color ); static GObjectClass *parent_class = NULL; @@ -418,8 +416,8 @@ packet_list_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, g_value_init(value, G_TYPE_STRING); - if (!record->columnized || !record->colorized) - packet_list_dissect_and_cache_record(packet_list, record, !record->columnized, !record->colorized); + if (record->col_text == NULL || !record->colorized) + packet_list_dissect_and_cache_record(packet_list, record, !record->colorized); text_column = packet_list->col_to_text[column]; if (text_column == -1) { /* column based on frame_data */ @@ -626,10 +624,9 @@ packet_list_append_record(PacketList *packet_list, frame_data *fdata) g_return_val_if_fail(PACKETLIST_IS_LIST(packet_list), -1); newrecord = se_new(PacketListRecord); - newrecord->columnized = FALSE; newrecord->colorized = FALSE; - newrecord->col_text_len = (gushort *)se_alloc0(sizeof(*newrecord->col_text_len) * packet_list->n_text_cols); - newrecord->col_text = (const gchar **)se_alloc0(sizeof(*newrecord->col_text) * packet_list->n_text_cols); + newrecord->col_text_len = NULL; + newrecord->col_text = NULL; newrecord->fdata = fdata; #ifdef PACKET_PARANOID_CHECKS newrecord->physical_pos = PACKET_LIST_RECORD_COUNT(packet_list->physical_rows); @@ -826,7 +823,7 @@ packet_list_dissect_and_cache_all(PacketList *packet_list) for (progbar_loop_var = 0; progbar_loop_var < progbar_loop_max; ++progbar_loop_var) { record = PACKET_LIST_RECORD_GET(packet_list->physical_rows, progbar_loop_var); - packet_list_dissect_and_cache_record(packet_list, record, TRUE, FALSE); + packet_list_dissect_and_cache_record(packet_list, record, FALSE); /* Create the progress bar if necessary. We check on every iteration of the loop, so that it takes no @@ -1112,7 +1109,7 @@ packet_list_recreate_visible_rows_list(PacketList *packet_list) } static void -packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord *record, gboolean dissect_columns, gboolean dissect_color) +packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord *record, gboolean dissect_color) { epan_dissect_t edt; frame_data *fdata; @@ -1121,23 +1118,19 @@ packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord * gboolean create_proto_tree; struct wtap_pkthdr phdr; /* Packet header */ Buffer buf; /* Packet data */ + gboolean dissect_columns = (record->col_text == NULL); g_return_if_fail(packet_list); g_return_if_fail(PACKETLIST_IS_LIST(packet_list)); - g_assert((record->col_text != NULL)&&(record->col_text_len != NULL)); - - /* XXX: Does it work to check if the record is already columnized/colorized ? - * i.e.: test record->columnized and record->colorized and just return - * if they're both TRUE. - * Note: Part of the patch submitted with Bug #4273 had code to do this but it - * was commented out in the patch and was not included in SVN #33011. - */ fdata = record->fdata; - if (dissect_columns) + if (dissect_columns) { cinfo = &cfile.cinfo; - else + + record->col_text = (const gchar **)se_alloc0(sizeof(*record->col_text) * packet_list->n_text_cols); + record->col_text_len = (gushort *)se_alloc0(sizeof(*record->col_text_len) * packet_list->n_text_cols); + } else cinfo = NULL; buffer_init(&buf, 1500); @@ -1157,7 +1150,6 @@ packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord * for(col = 0; col < cinfo->num_cols; ++col) packet_list_change_record(packet_list, record, col, cinfo); - record->columnized = TRUE; } if (dissect_color) { fdata->color_filter = NULL; @@ -1196,8 +1188,6 @@ packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord * packet_list_change_record(packet_list, record, col, cinfo); } - if (dissect_columns) - record->columnized = TRUE; if (dissect_color) record->colorized = TRUE; |