summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epan/column-utils.c30
-rw-r--r--epan/column.c17
2 files changed, 17 insertions, 30 deletions
diff --git a/epan/column-utils.c b/epan/column-utils.c
index 604587e3d1..d754084f25 100644
--- a/epan/column-utils.c
+++ b/epan/column-utils.c
@@ -328,41 +328,11 @@ col_custom_prime_edt(epan_dissect_t *edt, column_info *cinfo)
for (i = cinfo->col_first[COL_CUSTOM];
i <= cinfo->col_last[COL_CUSTOM]; i++) {
- int i_list = 0;
-
col_item = &cinfo->columns[i];
- col_custom_fields_ids_free(&col_item->col_custom_fields_ids);
if (col_item->fmt_matx[COL_CUSTOM] &&
col_item->col_custom_dfilter) {
epan_dissect_prime_dfilter(edt, col_item->col_custom_dfilter);
- if (col_item->col_custom_fields) {
- gchar **fields;
- guint i_field = 0;
-
- /* Not using a GRegex here would improve performance. */
- fields = g_regex_split(cinfo->prime_regex, col_item->col_custom_fields,
- G_REGEX_MATCH_ANCHORED);
-
- for (i_field =0; i_field < g_strv_length(fields); i_field += 1) {
- if (fields[i_field] && *fields[i_field]) {
- int id;
-
- header_field_info* hfinfo = proto_registrar_get_byname(fields[i_field]);
- id = hfinfo ? hfinfo->id : -1;
- if (id >= 0) {
- int *idx;
-
- idx = g_new(int, 1);
- *idx = id;
- col_item->col_custom_fields_ids =
- g_slist_insert(col_item->col_custom_fields_ids, idx, i_list);
- i_list += 1;
- }
- }
- }
- g_strfreev(fields);
- }
}
}
}
diff --git a/epan/column.c b/epan/column.c
index a8037346d7..b6ffd1fd3b 100644
--- a/epan/column.c
+++ b/epan/column.c
@@ -872,6 +872,23 @@ build_column_format_array(column_info *cinfo, const gint num_cols, const gboolea
col_item->col_custom_occurrence = 0;
col_item->col_custom_dfilter = NULL;
}
+ if (col_item->col_custom_fields) {
+ gchar **fields = g_regex_split(cinfo->prime_regex, col_item->col_custom_fields,
+ G_REGEX_MATCH_ANCHORED);
+ guint i_field;
+
+ for (i_field = 0; i_field < g_strv_length(fields); i_field++) {
+ if (fields[i_field] && *fields[i_field]) {
+ header_field_info *hfinfo = proto_registrar_get_byname(fields[i_field]);
+ if (hfinfo) {
+ int *idx = g_new(int, 1);
+ *idx = hfinfo->id;
+ col_item->col_custom_fields_ids = g_slist_append(col_item->col_custom_fields_ids, idx);
+ }
+ }
+ }
+ g_strfreev(fields);
+ }
} else {
col_item->col_custom_fields = NULL;
col_item->col_custom_occurrence = 0;