summaryrefslogtreecommitdiff
path: root/gtk/gtkrecentchoosermenu.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2007-07-04 07:41:57 +0000
committerChris Wilson <cpwilson@src.gnome.org>2007-07-04 07:41:57 +0000
commit93a1d3d2983719f132e257193ac20fe70c43b144 (patch)
tree5b2bcc2b857e07eba13218601157b768842f4fdc /gtk/gtkrecentchoosermenu.c
parent631806a20fa212139119e987cc14fb7273e0c786 (diff)
downloadgtk+-93a1d3d2983719f132e257193ac20fe70c43b144.tar.gz
Remove a surplus GDK_THREADS_LEAVE() and avoid a potential use after free
2007-07-04 Chris Wilson <chris@chris-wilson.co.uk> * gtk/gtkrecentchoosermenu.c (idle_populate_func), (idle_populate_clean_up), (gtk_recent_chooser_menu_populate): Remove a surplus GDK_THREADS_LEAVE() and avoid a potential use after free in the source destroy notify. (#453033) svn path=/trunk/; revision=18375
Diffstat (limited to 'gtk/gtkrecentchoosermenu.c')
-rw-r--r--gtk/gtkrecentchoosermenu.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c
index cff079c071..8720bcd82b 100644
--- a/gtk/gtkrecentchoosermenu.c
+++ b/gtk/gtkrecentchoosermenu.c
@@ -921,6 +921,7 @@ typedef struct
gint loaded_items;
gint displayed_items;
GtkRecentChooserMenu *menu;
+ GtkWidget *placeholder;
} MenuPopulateData;
static gboolean
@@ -943,11 +944,9 @@ idle_populate_func (gpointer data)
if (!pdata->items)
{
/* show the placeholder here */
- gtk_widget_show (priv->placeholder);
+ gtk_widget_show (pdata->placeholder);
pdata->displayed_items = 1;
- GDK_THREADS_LEAVE ();
-
return FALSE;
}
@@ -1001,13 +1000,13 @@ static void
idle_populate_clean_up (gpointer data)
{
MenuPopulateData *pdata = data;
- GtkRecentChooserMenuPrivate *priv = pdata->menu->priv;
/* show the placeholder in case no item survived
* the filtering process in the idle loop
*/
if (!pdata->displayed_items)
- gtk_widget_show (priv->placeholder);
+ gtk_widget_show (pdata->placeholder);
+ g_object_unref (pdata->placeholder);
g_slice_free (MenuPopulateData, data);
}
@@ -1027,6 +1026,7 @@ gtk_recent_chooser_menu_populate (GtkRecentChooserMenu *menu)
pdata->loaded_items = 0;
pdata->displayed_items = 0;
pdata->menu = menu;
+ pdata->placeholder = g_object_ref (priv->placeholder);
priv->icon_size = get_icon_size_for_widget (GTK_WIDGET (menu));