aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>2009-09-05 19:07:04 +0000
committerKovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>2009-09-05 19:07:04 +0000
commit0326f65bf32f00c24f0446e01a7b3b3db18896ac (patch)
tree78b0b4206d9674ff6e529cd4278002f3ef43b3ca
parent7d4cf0b966a614493c0c76a7e53ba334670be949 (diff)
Don't copy constant column strings. This reduces memory foot print because COL_PROTOCOL is usually a constant string. This saves us 3-4 bytes for each frame
svn path=/trunk/; revision=29723
-rw-r--r--gtk/packet_list_store.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/gtk/packet_list_store.c b/gtk/packet_list_store.c
index cd06671f7b..0ff460d3f2 100644
--- a/gtk/packet_list_store.c
+++ b/gtk/packet_list_store.c
@@ -666,7 +666,26 @@ packet_list_change_record(PacketList *packet_list, guint row, gint col, column_i
record->fdata->col_text = se_alloc0(sizeof(record->fdata->col_text) *
(packet_list->n_columns-1));
- record->fdata->col_text[col] = se_strdup(cinfo->col_data[col]);
+ switch (cfile.cinfo.col_fmt[col]) {
+ case COL_PROTOCOL:
+ case COL_INFO:
+ case COL_IF_DIR:
+ case COL_DCE_CALL:
+ case COL_DCE_CTX:
+ case COL_8021Q_VLAN_ID:
+ case COL_EXPERT:
+ case COL_FREQ_CHAN:
+ if (cinfo->col_data[col] != cinfo->col_buf[col]) {
+ /* This is a constant string, so we don't have to copy it */
+ record->fdata->col_text[col] = (gchar *) cinfo->col_data[col];
+ break;
+ }
+ /* !! FALL-THROUGH!! */
+
+ default:
+ record->fdata->col_text[col] = se_strdup(cinfo->col_data[col]);
+ break;
+ }
}
static gboolean