summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hua <william.hua@canonical.com>2017-01-09 12:04:48 -0500
committerWilliam Hua <william.hua@canonical.com>2017-01-09 12:04:48 -0500
commita50a98f38b9a833011012f8a8f1cec01656acb6b (patch)
tree55c2fcc5617161eb0fb834b8ac7f4ab2eab44115
parentea58ebe76d1854b0b42ad960a3d3e61203e7a3c5 (diff)
downloadgtk+-a50a98f38b9a833011012f8a8f1cec01656acb6b.tar.gz
mir: properly handle empty clipboard
https://bugzilla.gnome.org/show_bug.cgi?id=775732
-rw-r--r--gdk/mir/gdkmirdisplay.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gdk/mir/gdkmirdisplay.c b/gdk/mir/gdkmirdisplay.c
index 12a7679151..8b210299d6 100644
--- a/gdk/mir/gdkmirdisplay.c
+++ b/gdk/mir/gdkmirdisplay.c
@@ -743,10 +743,16 @@ gdk_mir_display_real_convert_selection (GdkDisplay *display,
paste_data = g_variant_get_fixed_array (mir_display->paste_data, &paste_size, sizeof (guchar));
paste_header = (const gint *) paste_data;
- paste_formats = g_ptr_array_new_full (paste_header[0], g_free);
- for (i = 0; i < paste_header[0]; i++)
- g_ptr_array_add (paste_formats, g_strndup (paste_data + paste_header[1 + 4 * i], paste_header[2 + 4 * i]));
+ if (paste_data)
+ {
+ paste_formats = g_ptr_array_new_full (paste_header[0], g_free);
+
+ for (i = 0; i < paste_header[0]; i++)
+ g_ptr_array_add (paste_formats, g_strndup (paste_data + paste_header[1 + 4 * i], paste_header[2 + 4 * i]));
+ }
+ else
+ paste_formats = g_ptr_array_new_with_free_func (g_free);
if (target == gdk_atom_intern_static_string ("TARGETS"))
{