summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2007-11-10 04:50:15 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-11-10 04:50:15 +0000
commit6665188687acd7429a4cc65e60ca0f2ec56d2abd (patch)
tree5a38af84c8d566c316e3b3038b9bcf5d7a5f7ca0
parentf48938703934d02ae20ad46ed8487da059384be0 (diff)
downloadgdk-pixbuf-6665188687acd7429a4cc65e60ca0f2ec56d2abd.tar.gz
More robustness improvements of the parser
svn path=/trunk/; revision=18978
-rw-r--r--ChangeLog3
-rw-r--r--gtk/gtkbuilderparser.c18
2 files changed, 12 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 8384acf37..700d68e2e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}