From ca0d56a3a436d09178af8fc6a387601c837eaced Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Thu, 3 May 2018 09:17:24 +0200 Subject: [PATCH] wayland: avoid a crash in is_effectively_synchronized() To check if a subsurface is effectively synchronized, we walk the subsurface hierarchy to look for a non-subsurface parent or a subsurface being synchronized. However, when client is closing, the parent surface might already be gone, in which case we end up with a surface being NULL which causes a NULL pointer dereference and a crash. Check if the parent surface is NULL to avoid the crash, and consider it's already synchronized if it is NULL to avoid further updates. Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/124 (cherry picked from commit 52fdd24467fa8d6f97bd5f9eb6d5509fa43436c6) --- src/wayland/meta-wayland-surface.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 92225cb6d..9fdad3eb9 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -580,7 +580,10 @@ meta_wayland_surface_is_effectively_synchronized (MetaWaylandSurface *surface) { MetaWaylandSurface *parent = surface->sub.parent; - return meta_wayland_surface_is_effectively_synchronized (parent); + if (parent) + return meta_wayland_surface_is_effectively_synchronized (parent); + + return TRUE; } } }