From 86794ce0084ba81fc31d1a0f313498e969e3a3f3 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sun, 3 Jul 2011 16:40:03 -0700 Subject: [PATCH] Bug 653450 - gtkfilechooser crashes when added favorite Ensure that display is set during drag-and-drop, and that string lists' memory is zeroed after allocation to prevent g_strfreev() from over-running. --- gdk/quartz/gdkselection-quartz.c | 4 +--- gtk/gtkdnd-quartz.c | 1 + gtk/gtkquartz.c | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gdk/quartz/gdkselection-quartz.c b/gdk/quartz/gdkselection-quartz.c index 566448e2b..3accf32bd 100644 --- a/gdk/quartz/gdkselection-quartz.c +++ b/gdk/quartz/gdkselection-quartz.c @@ -121,10 +121,8 @@ make_list (const gchar *text, } if (list) - *list = g_new (gchar *, n_strings + 1); + *list = g_new0 (gchar *, n_strings + 1); - (*list)[n_strings] = NULL; - i = n_strings; tmp_list = strings; while (tmp_list) diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c index dced9a39d..076117138 100644 --- a/gtk/gtkdnd-quartz.c +++ b/gtk/gtkdnd-quartz.c @@ -147,6 +147,7 @@ struct _GtkDragFindData selection_data.data = NULL; selection_data.length = -1; selection_data.target = _gtk_quartz_pasteboard_type_to_atom (type); + selection_data.display = gdk_display_get_default (); if (gtk_target_list_find (info->target_list, selection_data.target, diff --git a/gtk/gtkquartz.c b/gtk/gtkquartz.c index d691f7f25..b9ea2ec1f 100644 --- a/gtk/gtkquartz.c +++ b/gtk/gtkquartz.c @@ -160,7 +160,8 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard, selection_data = g_slice_new0 (GtkSelectionData); selection_data->selection = selection; selection_data->target = target; - + if (!selection_data->display) + selection_data->display = gdk_display_get_default (); if (target == gdk_atom_intern_static_string ("UTF8_STRING")) { NSString *s = [pasteboard stringForType:NSStringPboardType]; -- 2.43.2