diff options
author | Johan Dahlin <johan@src.gnome.org> | 2007-06-27 04:03:35 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2007-06-27 04:03:35 +0000 |
commit | 4c1343a22c1e1a3d8d5e210ba3c34bd4c21d4bec (patch) | |
tree | abd521e414052f6f0aa10492f73cc937cf183058 /gtk/gtkbuilderparser.c | |
parent | 610331684f696959f927fcda459e47207a068760 (diff) | |
download | gdk-pixbuf-4c1343a22c1e1a3d8d5e210ba3c34bd4c21d4bec.tar.gz |
Plug leaks in error code paths
* gtk/gtkbuilderparser.c: Plug leaks in error code paths
svn path=/trunk/; revision=18254
Diffstat (limited to 'gtk/gtkbuilderparser.c')
-rw-r--r-- | gtk/gtkbuilderparser.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c index ea2df67e6..87fd6231a 100644 --- a/gtk/gtkbuilderparser.c +++ b/gtk/gtkbuilderparser.c @@ -38,8 +38,8 @@ #include "gtktypeutils.h" #include "gtkalias.h" -static void free_property_info (PropertyInfo *info, - gpointer user_data); +static void free_property_info (PropertyInfo *info); +static void free_object_info (ObjectInfo *info); static inline void state_push (ParserData *data, gpointer info) @@ -196,6 +196,8 @@ parse_object (ParserData *data, if (child_info && strcmp (child_info->tag.name, "object") == 0) { error_invalid_tag (data, element_name, NULL, error); + if (child_info) + free_object_info ((ObjectInfo*)child_info); return; } @@ -288,6 +290,8 @@ parse_child (ParserData *data, if (!object_info || strcmp (object_info->tag.name, "object") != 0) { error_invalid_tag (data, element_name, "object", error); + if (object_info) + free_object_info (object_info); return; } @@ -372,8 +376,7 @@ parse_property (ParserData *data, } static void -free_property_info (PropertyInfo *info, - gpointer user_data) +free_property_info (PropertyInfo *info) { g_free (info->data); g_free (info->name); @@ -728,6 +731,9 @@ end_element (GMarkupParseContext *context, if (!prop_info->data) { error_missing_property_value (data, error); + free_property_info (prop_info); + if (strcmp (info->tag.name, "object") == 0) + free_object_info((ObjectInfo*)info); return; } |