diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-04-19 07:16:32 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2011-06-30 00:41:55 +0800 |
commit | 27d6ca4b21e1fc39398825ec689297c824845102 (patch) | |
tree | e0c0534745fc8cfcaafa8689282b0025132157bc /e-util | |
parent | 7dd5835c8e76522ed392b60506b45c17802a7c20 (diff) | |
download | gsoc2013-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.c | 19 |
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; } /** |