diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2007-11-10 04:50:15 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2007-11-10 04:50:15 +0000 |
commit | 6665188687acd7429a4cc65e60ca0f2ec56d2abd (patch) | |
tree | 5a38af84c8d566c316e3b3038b9bcf5d7a5f7ca0 | |
parent | f48938703934d02ae20ad46ed8487da059384be0 (diff) | |
download | gdk-pixbuf-6665188687acd7429a4cc65e60ca0f2ec56d2abd.tar.gz |
More robustness improvements of the parser
svn path=/trunk/; revision=18978
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | gtk/gtkbuilderparser.c | 18 |
2 files changed, 12 insertions, 9 deletions
@@ -1,5 +1,8 @@ 2007-11-09 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkbuilderparser.c: More robustness improvements + for the parser. + * gtk/gtkbuilderparser.c (parse_signal): Handle misplaced signal elements without asserting. diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c index 56acdc261..ee66b8d2d 100644 --- a/gtk/gtkbuilderparser.c +++ b/gtk/gtkbuilderparser.c @@ -244,8 +244,6 @@ 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; } @@ -332,9 +330,7 @@ parse_child (ParserData *data, object_info = state_peek_info (data, ObjectInfo); 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); + error_invalid_tag (data, element_name, NULL, error); return; } @@ -375,11 +371,13 @@ parse_property (ParserData *data, gchar *name = NULL; gchar *context = NULL; gboolean translatable = FALSE; + ObjectInfo *object_info; int i; - if (data->stack == NULL) + object_info = state_peek_info (data, ObjectInfo); + if (!object_info || strcmp (object_info->tag.name, "object") != 0) { - error_invalid_tag (data, "property", NULL, error); + error_invalid_tag (data, element_name, NULL, error); return; } @@ -446,11 +444,13 @@ parse_signal (ParserData *data, gboolean after = FALSE; gboolean swapped = FALSE; gboolean swapped_set = FALSE; + ObjectInfo *object_info; int i; - if (data->stack == NULL) + object_info = state_peek_info (data, ObjectInfo); + if (!object_info || strcmp (object_info->tag.name, "object") != 0) { - error_invalid_tag (data, "signal", NULL, error); + error_invalid_tag (data, element_name, NULL, error); return; } |