From cf88675807f15586cdc5544710fdea7067a85fad Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 28 Sep 2015 14:25:36 +0200 Subject: [PATCH] wayland: Fix weak ref tracking on data sources We may get a NULL one here, and we're wrongly attempting to remove the old weak ref from the new data source object. --- src/wayland/meta-wayland-data-device.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wayland/meta-wayland-data-device.c b/src/wayland/meta-wayland-data-device.c index 61acdc6d9..ae0fcf5eb 100644 --- a/src/wayland/meta-wayland-data-device.c +++ b/src/wayland/meta-wayland-data-device.c @@ -743,12 +743,14 @@ meta_wayland_data_device_set_dnd_source (MetaWaylandDataDevice *data_device, return; if (data_device->dnd_data_source) - g_object_remove_weak_pointer (G_OBJECT (source), + g_object_remove_weak_pointer (G_OBJECT (data_device->dnd_data_source), (gpointer *)&data_device->dnd_data_source); data_device->dnd_data_source = source; - g_object_add_weak_pointer (G_OBJECT (source), - (gpointer *)&data_device->dnd_data_source); + + if (source) + g_object_add_weak_pointer (G_OBJECT (data_device->dnd_data_source), + (gpointer *)&data_device->dnd_data_source); wl_signal_emit (&data_device->dnd_ownership_signal, source); }