aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-07-06 18:31:35 +0000
committerEvan Huus <eapache@gmail.com>2013-07-06 18:31:35 +0000
commit2626f96901887e24010106f9f6de33c1c46287c3 (patch)
treefc714fb77a79830580310a905e49b6044ab3dad3 /epan
parentbae9597ca70a3b004399d609839637bb7970df78 (diff)
Use epan-scoped memory for XML field strings. Another ~35KB leaks fixed.
Running `tshark -v` (which has the happy effect of doing epan_init(); epan_cleanup(); with no practical work in-between), now leaks a hair less than 2KB of memory on my machine. It was over 500KB earlier today :) svn path=/trunk/; revision=50416
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-xml.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c
index 85dd58813d..16b0fbf7e2 100644
--- a/epan/dissectors/packet-xml.c
+++ b/epan/dissectors/packet-xml.c
@@ -826,7 +826,7 @@ static void add_xml_field(wmem_array_t *hfs, int *p_id, const gchar *name, const
static void add_xml_attribute_names(gpointer k, gpointer v, gpointer p)
{
struct _attr_reg_data *d = (struct _attr_reg_data *)p;
- gchar *basename = g_strdup_printf("%s.%s", d->basename, (gchar *)k);
+ gchar *basename = wmem_strdup_printf(wmem_epan_scope(), "%s.%s", d->basename, (gchar *)k);
add_xml_field(d->hf, (int*) v, (gchar *)k, basename);
}
@@ -980,8 +980,8 @@ static xml_ns_t *make_xml_hier(gchar *elem_name,
fresh = duplicate_element(orig);
fresh->fqn = fqn;
- add_xml_field(hfs, &(fresh->hf_tag), g_strdup(elem_name), fqn);
- add_xml_field(hfs, &(fresh->hf_cdata), g_strdup(elem_name), fqn);
+ add_xml_field(hfs, &(fresh->hf_tag), wmem_strdup(wmem_epan_scope(), elem_name), fqn);
+ add_xml_field(hfs, &(fresh->hf_cdata), wmem_strdup(wmem_epan_scope(), elem_name), fqn);
ett_p = &fresh->ett;
g_array_append_val(etts, ett_p);