Fix a sporadic segfault in treeview keynav

If a a treeview has frequent periodic additions and removals of
rows, it is possible that a page down keypress moves the cursor
out of the height of the treeview. In some of these cases, we
can be tricked into dereferencing a  NULL pointer.

Bug 612919.
This commit is contained in:
Matthias Clasen 2010-08-10 00:31:46 -04:00
parent e3bd926c1e
commit fb48e023d2

View File

@ -9822,6 +9822,13 @@ gtk_tree_view_move_cursor_page_up_down (GtkTreeView *tree_view,
_gtk_rbtree_find_offset (tree_view->priv->tree, y, _gtk_rbtree_find_offset (tree_view->priv->tree, y,
&cursor_tree, &cursor_node); &cursor_tree, &cursor_node);
if (cursor_tree == NULL)
{
/* FIXME: we lost the cursor. Should we try to get one? */
gtk_tree_path_free (old_cursor_path);
return;
}
if (tree_view->priv->cursor_offset > BACKGROUND_HEIGHT (cursor_node)) if (tree_view->priv->cursor_offset > BACKGROUND_HEIGHT (cursor_node))
{ {
_gtk_rbtree_next_full (cursor_tree, cursor_node, _gtk_rbtree_next_full (cursor_tree, cursor_node,