From 4325c200137f4391cff24398251f37b255387ae3 Mon Sep 17 00:00:00 2001 From: Thomas Holder Date: Tue, 22 Sep 2020 09:27:29 +0200 Subject: gtktreeview: Fix child access after TEST_EXPAND_ROW In gtk_tree_view_build_tree with recurse=TRUE, the TEST_EXPAND_ROW signal might invalidate the child iterator. Getting the iterator after the signal (instead of before) fixes the issue. Fixes https://gitlab.com/inkscape/inkscape/-/issues/1879 --- gtk/gtktreeview.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gtk/gtktreeview.c') diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index e9f6c12327..315360c683 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -8616,13 +8616,13 @@ gtk_tree_view_build_tree (GtkTreeView *tree_view, else gtk_tree_path_next (path); - if (gtk_tree_model_iter_children (priv->model, &child, iter)) + if (gtk_tree_model_iter_has_child (priv->model, iter)) { gboolean expand; g_signal_emit (tree_view, tree_view_signals[TEST_EXPAND_ROW], 0, iter, path, &expand); - if (gtk_tree_model_iter_has_child (priv->model, iter) + if (gtk_tree_model_iter_children (priv->model, &child, iter) && !expand) { temp->children = gtk_tree_rbtree_new (); -- cgit v1.2.1