diff options
author | Matthias Clasen <mclasen@redhat.com> | 2006-04-12 04:49:18 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2006-04-12 04:49:18 +0000 |
commit | e0e24d0313f515e7c10dbd7715f6ee31e79f2b64 (patch) | |
tree | 2f9359844d4af04755897c20834635e72d560f6c /gtk/gtkuimanager.c | |
parent | d13554a35c14debbfa618171d486016701851603 (diff) | |
download | gtk+-e0e24d0313f515e7c10dbd7715f6ee31e79f2b64.tar.gz |
Don't pass a negative value as string length to get_child_node().
2006-04-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkuimanager.c (start_element_handler): Don't pass
a negative value as string length to get_child_node(). (Coverity)
Diffstat (limited to 'gtk/gtkuimanager.c')
-rw-r--r-- | gtk/gtkuimanager.c | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/gtk/gtkuimanager.c b/gtk/gtkuimanager.c index f7fa90b7f0..b2f9d775ec 100644 --- a/gtk/gtkuimanager.c +++ b/gtk/gtkuimanager.c @@ -1308,7 +1308,7 @@ start_element_handler (GMarkupParseContext *context, if (!strcmp (node_name, "separator")) { node_name = NULL; - length = -1; + length = 0; } else length = strlen (node_name); @@ -1817,7 +1817,7 @@ get_action_by_name (GtkUIManager *merge, return NULL; } -static gboolean +static void find_menu_position (GNode *node, GtkWidget **menushell_p, gint *pos_p) @@ -1825,13 +1825,12 @@ find_menu_position (GNode *node, GtkWidget *menushell; gint pos; - g_return_val_if_fail (node != NULL, FALSE); - g_return_val_if_fail (NODE_INFO (node)->type == NODE_TYPE_MENU || - NODE_INFO (node)->type == NODE_TYPE_POPUP || - NODE_INFO (node)->type == NODE_TYPE_MENU_PLACEHOLDER || - NODE_INFO (node)->type == NODE_TYPE_MENUITEM || - NODE_INFO (node)->type == NODE_TYPE_SEPARATOR, - FALSE); + g_return_if_fail (node != NULL); + g_return_if_fail (NODE_INFO (node)->type == NODE_TYPE_MENU || + NODE_INFO (node)->type == NODE_TYPE_POPUP || + NODE_INFO (node)->type == NODE_TYPE_MENU_PLACEHOLDER || + NODE_INFO (node)->type == NODE_TYPE_MENUITEM || + NODE_INFO (node)->type == NODE_TYPE_SEPARATOR); /* first sibling -- look at parent */ if (node->prev == NULL) @@ -1867,7 +1866,7 @@ find_menu_position (GNode *node, default: g_warning("%s: bad parent node type %d", G_STRLOC, NODE_INFO (parent)->type); - return FALSE; + return; } } else @@ -1881,9 +1880,9 @@ find_menu_position (GNode *node, else prev_child = NODE_INFO (sibling)->proxy; - g_return_val_if_fail (GTK_IS_WIDGET (prev_child), FALSE); + g_return_if_fail (GTK_IS_WIDGET (prev_child)); menushell = gtk_widget_get_parent (prev_child); - g_return_val_if_fail (GTK_IS_MENU_SHELL (menushell), FALSE); + g_return_if_fail (GTK_IS_MENU_SHELL (menushell)); pos = g_list_index (GTK_MENU_SHELL (menushell)->children, prev_child) + 1; } @@ -1892,11 +1891,9 @@ find_menu_position (GNode *node, *menushell_p = menushell; if (pos_p) *pos_p = pos; - - return TRUE; } -static gboolean +static void find_toolbar_position (GNode *node, GtkWidget **toolbar_p, gint *pos_p) @@ -1904,13 +1901,12 @@ find_toolbar_position (GNode *node, GtkWidget *toolbar; gint pos; - g_return_val_if_fail (node != NULL, FALSE); - g_return_val_if_fail (NODE_INFO (node)->type == NODE_TYPE_TOOLBAR || - NODE_INFO (node)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER || - NODE_INFO (node)->type == NODE_TYPE_TOOLITEM || - NODE_INFO (node)->type == NODE_TYPE_SEPARATOR, - FALSE); - + g_return_if_fail (node != NULL); + g_return_if_fail (NODE_INFO (node)->type == NODE_TYPE_TOOLBAR || + NODE_INFO (node)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER || + NODE_INFO (node)->type == NODE_TYPE_TOOLITEM || + NODE_INFO (node)->type == NODE_TYPE_SEPARATOR); + /* first sibling -- look at parent */ if (node->prev == NULL) { @@ -1925,14 +1921,14 @@ find_toolbar_position (GNode *node, break; case NODE_TYPE_TOOLBAR_PLACEHOLDER: toolbar = gtk_widget_get_parent (NODE_INFO (parent)->proxy); - g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE); + g_return_if_fail (GTK_IS_TOOLBAR (toolbar)); pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (NODE_INFO (parent)->proxy)) + 1; break; default: g_warning ("%s: bad parent node type %d", G_STRLOC, NODE_INFO (parent)->type); - return FALSE; + return; } } else @@ -1946,20 +1942,18 @@ find_toolbar_position (GNode *node, else prev_child = NODE_INFO (sibling)->proxy; - g_return_val_if_fail (GTK_IS_WIDGET (prev_child), FALSE); + g_return_if_fail (GTK_IS_WIDGET (prev_child)); toolbar = gtk_widget_get_parent (prev_child); - g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE); + g_return_if_fail (GTK_IS_TOOLBAR (toolbar)); pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (prev_child)) + 1; } - + if (toolbar_p) *toolbar_p = toolbar; if (pos_p) *pos_p = pos; - - return TRUE; } /** @@ -2253,6 +2247,7 @@ update_node (GtkUIManager *self, GtkWidget *menushell; gint pos; + if (! if (NODE_INFO (node->parent)->type == NODE_TYPE_TOOLITEM || find_menu_position (node, &menushell, &pos)) { |