summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-06-24 11:27:20 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-06-24 16:42:06 +0200
commit25885ca600fffcade4f3a77019d8cca17d9ec325 (patch)
tree1681587236c5b973d4a180cfd91d5c512c2134d9
parent48ea0cbe4b8bcd37958601d39b9e93be7d28fa8b (diff)
downloadgtk+-25885ca600fffcade4f3a77019d8cca17d9ec325.tar.gz
wayland: Properly initialize/finalize where we store the data_source.send fd
The fd must be closed on async_write_data_free(), but we should also initialize it to -1 so gdk_wayland_selection_check_write() doesn't wrongly pick the stdin fd. https://bugzilla.gnome.org/show_bug.cgi?id=751414
-rw-r--r--gdk/wayland/gdkselection-wayland.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gdk/wayland/gdkselection-wayland.c b/gdk/wayland/gdkselection-wayland.c
index a2b83ba40c..dbe1d63808 100644
--- a/gdk/wayland/gdkselection-wayland.c
+++ b/gdk/wayland/gdkselection-wayland.c
@@ -272,6 +272,7 @@ gdk_wayland_selection_new (void)
selection->selection_buffers =
g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) selection_buffer_cancel_and_unref);
+ selection->stored_selection.fd = -1;
return selection;
}
@@ -399,6 +400,8 @@ async_write_data_new (GdkWaylandSelection *selection)
static void
async_write_data_free (AsyncWriteData *write_data)
{
+ close (write_data->selection->stored_selection.fd);
+ write_data->selection->stored_selection.fd = -1;
g_object_unref (write_data->stream);
g_slice_free (AsyncWriteData, write_data);
}