From 655c9dd526912cf551865664a03576abdaa9a76a Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 1 Oct 2019 11:54:28 -0300 Subject: [PATCH] wayland/surface: Only call destroy func when available When calling gdk_wayland_surface_export_handle(), if we pass some 'user_data' but no 'destroy_func', GTK4 crashes. That's because in xdg_exported_handle() we are unconditionally calling destroy_func -- even when it's NULL. Fix that by checking if there's a destroy function before calling it. Fixes https://gitlab.gnome.org/GNOME/gtk/issues/2179 --- gdk/wayland/gdksurface-wayland.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index 0a8043b16e..aed4489c7c 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -4063,8 +4063,11 @@ xdg_exported_handle (void *data, GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface); impl->exported.callback (surface, handle, impl->exported.user_data); - g_clear_pointer (&impl->exported.user_data, - impl->exported.destroy_func); + if (impl->exported.destroy_func) + { + g_clear_pointer (&impl->exported.user_data, + impl->exported.destroy_func); + } } static const struct zxdg_exported_v1_listener xdg_exported_listener = { -- 2.30.2