From 509345b8a4522318e9a0c8e3a741fc3a5b6b8435 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Sun, 8 Mar 2009 09:45:27 +0000 Subject: [PATCH] Prevent an infinite loop when query tooltip on contact list view. From: Xavier Claessens svn path=/trunk/; revision=2627 --- libempathy-gtk/empathy-contact-list-view.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c index b7a6601c..5df6c8d2 100644 --- a/libempathy-gtk/empathy-contact-list-view.c +++ b/libempathy-gtk/empathy-contact-list-view.c @@ -141,16 +141,24 @@ contact_list_view_query_tooltip_cb (EmpathyContactListView *view, GtkTreeModel *model; GtkTreeIter iter; GtkTreePath *path; + static gboolean running = FALSE; + gboolean ret = FALSE; + + /* Avoid an infinite loop. See GNOME bug #574377 */ + if (running) { + return FALSE; + } + running = TRUE; /* FIXME: We need GTK version >= 2.12.10. See GNOME bug #504087 */ if (gtk_check_version (2, 12, 10)) { - return FALSE; + goto OUT; } if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (view), &x, &y, keyboard_mode, &model, &path, &iter)) { - return FALSE; + goto OUT; } gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (view), tooltip, path); @@ -160,7 +168,7 @@ contact_list_view_query_tooltip_cb (EmpathyContactListView *view, EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact, -1); if (!contact) { - return FALSE; + goto OUT; } if (!priv->tooltip_widget) { @@ -176,10 +184,13 @@ contact_list_view_query_tooltip_cb (EmpathyContactListView *view, } gtk_tooltip_set_custom (tooltip, priv->tooltip_widget); + ret = TRUE; g_object_unref (contact); +OUT: + running = FALSE; - return TRUE; + return ret; } static void -- 2.39.2