diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2006-03-14 18:36:12 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2006-03-14 18:36:12 (GMT) |
commit | 6003391d261ef7940bbc14683f60b242fe347adb (patch) | |
tree | d447af4d678be9de110cbc289d6e85397963706e /shell | |
parent | c78f2e0844c77694c1d2059ca9fb0730bb6f7e22 (diff) |
Fix memory leaks. Fixes bug #333945
2006-03-14 Carlos Garcia Campos <carlosgc@gnome.org>
* shell/ev-metadata-manager.c (parseItem):
Fix memory leaks. Fixes bug #333945
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ev-metadata-manager.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/shell/ev-metadata-manager.c b/shell/ev-metadata-manager.c index 4103a35..f5ab040 100644 --- a/shell/ev-metadata-manager.c +++ b/shell/ev-metadata-manager.c @@ -127,6 +127,15 @@ ev_metadata_manager_shutdown (void) ev_metadata_manager = NULL; } +static void +value_free (gpointer data) +{ + GValue *value = (GValue *)data; + + g_value_unset (value); + g_free (value); +} + static GValue * parse_value (xmlChar *value, xmlChar *type) { @@ -184,7 +193,7 @@ parseItem (xmlDocPtr doc, xmlNodePtr cur) item->values = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, - g_free); + value_free); cur = cur->xmlChildrenNode; @@ -195,7 +204,7 @@ parseItem (xmlDocPtr doc, xmlNodePtr cur) xmlChar *key; xmlChar *xml_value; xmlChar *type; - GValue *value; + GValue *value; key = xmlGetProp (cur, (const xmlChar *)"key"); xml_value = xmlGetProp (cur, (const xmlChar *)"value"); @@ -209,6 +218,8 @@ parseItem (xmlDocPtr doc, xmlNodePtr cur) if (key != NULL) xmlFree (key); + if (type != NULL) + xmlFree (type); if (xml_value != NULL) xmlFree (xml_value); } @@ -286,16 +297,6 @@ load_values () return TRUE; } -static void -value_free (gpointer data) -{ - GValue *value = (GValue *)data; - - g_value_unset (value); - g_free (value); -} - - #define LAST_URI "last-used-value" static gboolean |