[glib] menu markup: tolerate not having a hash table of objects
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] menu markup: tolerate not having a hash table of objects
- Date: Thu, 15 Dec 2011 02:08:09 +0000 (UTC)
commit a6eda97d8e8440ea5b04c081d444916dc51ad220
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Dec 14 21:05:38 2011 -0500
menu markup: tolerate not having a hash table of objects
Various places in the code were assuming that the hash table was always
available. Fix this, and also avoid leaking strings now that the hash
table may be NULL.
Based on a patch by Simon McVittie, bug 666167
gio/gmenumarkup.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/gio/gmenumarkup.c b/gio/gmenumarkup.c
index bde3989..c0df3b6 100644
--- a/gio/gmenumarkup.c
+++ b/gio/gmenumarkup.c
@@ -138,19 +138,20 @@ g_menu_markup_start_element (GMarkupParseContext *context,
#define STRING G_MARKUP_COLLECT_STRING
#define NO_ATTRS() COLLECT (G_MARKUP_COLLECT_INVALID, NULL)
- if (!(state->frame.menu || state->frame.menu || state->string))
+ if (!(state->frame.menu || state->frame.item || state->string))
{
/* Can only have <menu> here. */
if (g_str_equal (element_name, "menu"))
{
gchar *id;
- if (COLLECT (STRDUP, "id", &id))
+ if (COLLECT (STRING, "id", &id))
{
GMenu *menu;
menu = g_menu_new ();
- g_hash_table_insert (state->objects, id, menu);
+ if (state->objects)
+ g_hash_table_insert (state->objects, g_strdup (id), menu);
g_menu_markup_push_frame (state, menu, NULL);
}
@@ -244,7 +245,7 @@ g_menu_markup_start_element (GMarkupParseContext *context,
g_menu_item_set_link (state->frame.item, name, G_MENU_MODEL (menu));
g_menu_markup_push_frame (state, menu, NULL);
- if (id != NULL)
+ if (id != NULL && state->objects)
g_hash_table_insert (state->objects, g_strdup (id), g_object_ref (menu));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]