diff options
author | Ted Gould <ted@gould.cx> | 2010-06-22 14:22:06 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-06-22 14:22:06 -0500 |
commit | 2ce48cf5a4300e610265a53505f830712eec5e50 (patch) | |
tree | 6e7639669e9f4b9afcc1578696e4c750b27474d8 | |
parent | ba00c24b625805e7c3069165c6eea5bca5166e22 (diff) | |
parent | a3e3bf18795873dcb8cafbaac758dc93448f49bf (diff) | |
download | libdbusmenu-2ce48cf5a4300e610265a53505f830712eec5e50.tar.gz libdbusmenu-2ce48cf5a4300e610265a53505f830712eec5e50.tar.bz2 libdbusmenu-2ce48cf5a4300e610265a53505f830712eec5e50.zip |
* Upstream Merge
* Checking to ensure our values are what we expect
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | libdbusmenu-gtk/menuitem.c | 29 |
2 files changed, 31 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog index d5dfe16..fb7d982 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +libdbusmenu (0.3.2-1ubuntu1~ppa4~value1) UNRELEASED; urgency=low + + * Upstream Merge + * Checking to ensure our values are what we expect + + -- Ted Gould <ted@ubuntu.com> Tue, 22 Jun 2010 14:21:45 -0500 + libdbusmenu (0.3.2-1ubuntu1~ppa3) lucid; urgency=low * Upstream Merge diff --git a/libdbusmenu-gtk/menuitem.c b/libdbusmenu-gtk/menuitem.c index 57cd258..e1e1e30 100644 --- a/libdbusmenu-gtk/menuitem.c +++ b/libdbusmenu-gtk/menuitem.c @@ -295,6 +295,9 @@ dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * ke if (wrapper == NULL) { return; } + if (!G_VALUE_HOLDS_BOXED(wrapper)) { + return; + } GValueArray * wrapperarray = (GValueArray *)g_value_get_boxed(wrapper); if (wrapperarray->n_values == 0) { @@ -306,6 +309,10 @@ dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * ke } GValue * ventryarray = g_value_array_get_nth(wrapperarray, 0); + if (!G_VALUE_HOLDS_BOXED(ventryarray)) { + return; + } + GValueArray * entryarray = (GValueArray *)g_value_get_boxed(ventryarray); if (entryarray->n_values == 0) { /* Seems a little odd, but really, we're saying that it isn't a @@ -316,19 +323,25 @@ dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * ke /* Parse through modifiers */ int i; for (i = 0; i < entryarray->n_values - 1; i++) { - if (g_strcmp0(g_value_get_string(g_value_array_get_nth(entryarray, i)), DBUSMENU_MENUITEM_SHORTCUT_CONTROL) == 0) { + GValue * value = g_value_array_get_nth(entryarray, i); + + if (!G_VALUE_HOLDS_STRING(value)) { + continue; + } + + if (g_strcmp0(g_value_get_string(value), DBUSMENU_MENUITEM_SHORTCUT_CONTROL) == 0) { *modifier |= GDK_CONTROL_MASK; continue; } - if (g_strcmp0(g_value_get_string(g_value_array_get_nth(entryarray, i)), DBUSMENU_MENUITEM_SHORTCUT_ALT) == 0) { + if (g_strcmp0(g_value_get_string(value), DBUSMENU_MENUITEM_SHORTCUT_ALT) == 0) { *modifier |= GDK_MOD1_MASK; continue; } - if (g_strcmp0(g_value_get_string(g_value_array_get_nth(entryarray, i)), DBUSMENU_MENUITEM_SHORTCUT_SHIFT) == 0) { + if (g_strcmp0(g_value_get_string(value), DBUSMENU_MENUITEM_SHORTCUT_SHIFT) == 0) { *modifier |= GDK_SHIFT_MASK; continue; } - if (g_strcmp0(g_value_get_string(g_value_array_get_nth(entryarray, i)), DBUSMENU_MENUITEM_SHORTCUT_SUPER) == 0) { + if (g_strcmp0(g_value_get_string(value), DBUSMENU_MENUITEM_SHORTCUT_SUPER) == 0) { *modifier |= GDK_SUPER_MASK; continue; } @@ -336,7 +349,13 @@ dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * ke GdkModifierType tempmod; - gtk_accelerator_parse(g_value_get_string(g_value_array_get_nth(entryarray, entryarray->n_values - 1)), key, &tempmod); + GValue * accelval = g_value_array_get_nth(entryarray, entryarray->n_values - 1); + if (!G_VALUE_HOLDS_STRING(accelval)) { + *modifier = 0; + return; + } + + gtk_accelerator_parse(g_value_get_string(accelval), key, &tempmod); return; } |