aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-04-19 07:16:32 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-06-30 00:41:55 +0800
commit27d6ca4b21e1fc39398825ec689297c824845102 (patch)
treee0c0534745fc8cfcaafa8689282b0025132157bc /e-util
parent7dd5835c8e76522ed392b60506b45c17802a7c20 (diff)
downloadgsoc2013-evolution-27d6ca4b21e1fc39398825ec689297c824845102.tar.gz
gsoc2013-evolution-27d6ca4b21e1fc39398825ec689297c824845102.tar.zst
gsoc2013-evolution-27d6ca4b21e1fc39398825ec689297c824845102.zip
Bug 647708 - e_plugin_xml_prop() can return libxml2 allocated memory
Always copy the xmlChar property into GLib-allocated memory. g_mem_is_system_malloc() has nothing to do with libxml2.
Diffstat (limited to 'e-util')
-rw-r--r--e-util/e-plugin.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/e-util/e-plugin.c b/e-util/e-plugin.c
index d3579b7d89..fa7f0d9d88 100644
--- a/e-util/e-plugin.c
+++ b/e-util/e-plugin.c
@@ -732,8 +732,7 @@ e_plugin_get_configure_widget (EPlugin *ep)
* @id: The name of the property to retrieve.
*
* A static helper function to look up a property on an XML node, and
- * ensure it is allocated in GLib system memory. If GLib isn't using
- * the system malloc then it must copy the property value.
+ * ensure it is allocated in GLib system memory.
*
* Return value: The property, allocated in GLib memory, or NULL if no
* such property exists.
@@ -741,17 +740,17 @@ e_plugin_get_configure_widget (EPlugin *ep)
gchar *
e_plugin_xml_prop (xmlNodePtr node, const gchar *id)
{
- gchar *p = (gchar *)xmlGetProp (node, (const guchar *)id);
+ xmlChar *xml_prop;
+ gchar *glib_prop = NULL;
- if (g_mem_is_system_malloc ()) {
- return p;
- } else {
- gchar * out = g_strdup (p);
+ xml_prop = xmlGetProp (node, (xmlChar *) id);
- if (p)
- xmlFree (p);
- return out;
+ if (xml_prop != NULL) {
+ glib_prop = g_strdup ((gchar *) xml_prop);
+ xmlFree (xml_prop);
}
+
+ return glib_prop;
}
/**