diff options
author | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-09-05 19:07:04 +0000 |
---|---|---|
committer | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-09-05 19:07:04 +0000 |
commit | 0326f65bf32f00c24f0446e01a7b3b3db18896ac (patch) | |
tree | 78b0b4206d9674ff6e529cd4278002f3ef43b3ca | |
parent | 7d4cf0b966a614493c0c76a7e53ba334670be949 (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.c | 21 |
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 |