[gtk+/gtk-2-16] Fix duplicated id detection in gtkbuilder
- From: Matthias Clasen <matthiasc src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-16] Fix duplicated id detection in gtkbuilder
- Date: Sat, 29 Aug 2009 02:43:22 +0000 (UTC)
commit 370d008b20f9732dcd42fc1f7a8b43235baf86e7
Author: Paolo Borelli <pborelli gnome org>
Date: Fri Aug 14 00:08:09 2009 +0200
Fix duplicated id detection in gtkbuilder
Fix memory handling of duplicated id hashtable and add unit test
gtk/gtkbuilderparser.c | 6 ++++--
gtk/tests/builder.c | 9 ++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c
index c5cb2d8..2e88ff0 100644
--- a/gtk/gtkbuilderparser.c
+++ b/gtk/gtkbuilderparser.c
@@ -404,7 +404,8 @@ parse_object (GMarkupParseContext *context,
return;
}
- g_hash_table_insert (data->object_ids, object_id, GINT_TO_POINTER (line));
+
+ g_hash_table_insert (data->object_ids, g_strdup (object_id), GINT_TO_POINTER (line));
}
static void
@@ -1162,7 +1163,8 @@ _gtk_builder_parser_parse_buffer (GtkBuilder *builder,
data->builder = builder;
data->filename = filename;
data->domain = g_strdup (domain);
- data->object_ids = g_hash_table_new (g_str_hash, g_str_equal);
+ data->object_ids = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify)g_free, NULL);
data->requested_objects = NULL;
if (requested_objs)
diff --git a/gtk/tests/builder.c b/gtk/tests/builder.c
index 7b2cc19..9649cf4 100644
--- a/gtk/tests/builder.c
+++ b/gtk/tests/builder.c
@@ -116,6 +116,13 @@ test_parser (void)
GTK_BUILDER_ERROR_INVALID_VALUE));
g_error_free (error);
+ error = NULL;
+ gtk_builder_add_from_string (builder, "<interface><object class=\"GtkButton\" id=\"a\"></object><object class=\"GtkButton\" id=\"a\"/></object></interface>", -1, &error);
+ g_assert (g_error_matches (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_DUPLICATE_ID));
+ g_error_free (error);
+
g_object_unref (builder);
}
@@ -2172,7 +2179,7 @@ test_add_objects (void)
" </object>"
" <object class=\"GtkWindow\" id=\"window2\">"
" <child>"
- " <object class=\"GtkLabel\" id=\"label1\">"
+ " <object class=\"GtkLabel\" id=\"label3\">"
" <property name=\"label\" translatable=\"no\">second label</property>"
" </object>"
" </child>"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]