[gtk+/quartz-integration] Bug #653450: Ensure that display is set during drag-and-drop, and that string lists' memory is zeroe



commit f183303b49bf3a7debba648dd43a59dca8c23efd
Author: John Ralls <jralls ceridwen us>
Date:   Sun Jul 3 16:40:03 2011 -0700

    Bug #653450: 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 |    7 ++++---
 gtk/gtkdnd-quartz.c              |    1 +
 gtk/gtkquartz.c                  |    3 ++-
 3 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gdk/quartz/gdkselection-quartz.c b/gdk/quartz/gdkselection-quartz.c
index c28bec5..f2fcf0b 100644
--- a/gdk/quartz/gdkselection-quartz.c
+++ b/gdk/quartz/gdkselection-quartz.c
@@ -125,9 +125,10 @@ make_list (const gchar  *text,
     }
 
   if (list)
-    *list = g_new (gchar *, n_strings + 1);
-
-  (*list)[n_strings] = NULL;
+    {
+      *list = g_new (gchar *, n_strings + 1);
+      memset (*list, 0, sizeof (*list));
+    }
 
   i = n_strings;
   tmp_list = strings;
diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
index ff86692..304371d 100644
--- a/gtk/gtkdnd-quartz.c
+++ b/gtk/gtkdnd-quartz.c
@@ -148,6 +148,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 19b6034..fd5009f 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];



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]