wayland: Properly initialize/finalize where we store the data_source.send fd
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 24 Jun 2015 09:27:20 +0000 (11:27 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 24 Jun 2015 14:42:06 +0000 (16:42 +0200)
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

gdk/wayland/gdkselection-wayland.c

index a2b83ba40c27ebf95b5281da36e896a4a2fed68e..dbe1d63808ab5d393cd03d6c7004a84afc565eb7 100644 (file)
@@ -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);
 }