[gtk+/gtk-2-24] Bug 657770 - Write to released memory in gtkdnd-quartz.c
- From: John Ralls <jralls src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] Bug 657770 - Write to released memory in gtkdnd-quartz.c
- Date: Sun, 25 Sep 2011 19:30:06 +0000 (UTC)
commit 4e64f6012f567edeacf23d3222caa9f809471b16
Author: Kristian Rietveld <kris gtk org>
Date: Sat Sep 24 17:32:21 2011 -0700
Bug 657770 - Write to released memory in gtkdnd-quartz.c
Clear the Drag paste board just before the info->context is released.
This way the GtkDragSourceOwner is released just before the drag context
is and thus can pasteboard:provideDataForType: not accidentally access
an already released drag context
gtk/gtkdnd-quartz.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
index f7b82a2..a2dcc1f 100644
--- a/gtk/gtkdnd-quartz.c
+++ b/gtk/gtkdnd-quartz.c
@@ -1836,6 +1836,9 @@ gtk_drag_set_default_icon (GdkColormap *colormap,
static void
gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
{
+ NSPasteboard *pasteboard;
+ NSAutoreleasePool *pool;
+
if (info->icon_pixbuf)
g_object_unref (info->icon_pixbuf);
@@ -1850,10 +1853,21 @@ gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
gtk_target_list_unref (info->target_list);
+ pool = [[NSAutoreleasePool alloc] init];
+
+ /* Empty the pasteboard, so that it will not accidentally access
+ * info->context after it has been destroyed.
+ */
+ pasteboard = [NSPasteboard pasteboardWithName: NSDragPboard];
+ [pasteboard declareTypes: nil owner: nil];
+
+ [pool relase];
+
gtk_drag_clear_source_info (info->context);
g_object_unref (info->context);
g_free (info);
+ info = NULL;
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]