From 58afcb80014d14ab95a031e19bdc11664c8a1d5b Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Thu, 25 Jul 2013 12:52:23 +0200 Subject: Fix crash in UnityMenuModel::menuItemChanged menuItemInserted set the iter _after_ the one that was just inserted as qdata. This is (a) wrong and (b) leads to the end iter being in there in some cases. menuItemChanged can't deal with that (it calls g_sequence_get() without checking for the end iter). --- libqmenumodel/src/unitymenumodel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libqmenumodel') diff --git a/libqmenumodel/src/unitymenumodel.cpp b/libqmenumodel/src/unitymenumodel.cpp index 0fc5612..418de61 100644 --- a/libqmenumodel/src/unitymenumodel.cpp +++ b/libqmenumodel/src/unitymenumodel.cpp @@ -187,9 +187,9 @@ void UnityMenuModelPrivate::menuItemInserted(GtkMenuTrackerItem *item, gint posi priv->model->beginInsertRows(QModelIndex(), position, position); it = g_sequence_get_iter_at_pos (priv->items, position); + it = g_sequence_insert_before (it, g_object_ref (item)); g_object_set_qdata (G_OBJECT (item), unity_menu_item_iterator_quark (), it); g_signal_connect (item, "notify", G_CALLBACK (menuItemChanged), it); - g_sequence_insert_before (it, g_object_ref (item)); priv->model->endInsertRows(); } -- cgit v1.2.3