diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2007-07-04 07:41:57 +0000 |
---|---|---|
committer | Chris Wilson <cpwilson@src.gnome.org> | 2007-07-04 07:41:57 +0000 |
commit | 93a1d3d2983719f132e257193ac20fe70c43b144 (patch) | |
tree | 5b2bcc2b857e07eba13218601157b768842f4fdc /gtk/gtkrecentchoosermenu.c | |
parent | 631806a20fa212139119e987cc14fb7273e0c786 (diff) | |
download | gtk+-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.c | 10 |
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)); |