From f6fc4c28830dd2391d7e61f7cec0c4d2d89d1f07 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Sun, 13 Dec 2020 16:07:31 +0100 Subject: [PATCH] subsurface: handle NULL parent in get_root_surface --- include/wlr/types/wlr_surface.h | 3 ++- types/wlr_surface.c | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/wlr/types/wlr_surface.h b/include/wlr/types/wlr_surface.h index abb05600..175150f9 100644 --- a/include/wlr/types/wlr_surface.h +++ b/include/wlr/types/wlr_surface.h @@ -220,7 +220,8 @@ struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface, struct wl_list *resource_list); /** - * Get the root of the subsurface tree for this surface. + * Get the root of the subsurface tree for this surface. Can return NULL if + * a surface in the tree has been destroyed. */ struct wlr_surface *wlr_surface_get_root_surface(struct wlr_surface *surface); diff --git a/types/wlr_surface.c b/types/wlr_surface.c index c251816e..dd022489 100644 --- a/types/wlr_surface.c +++ b/types/wlr_surface.c @@ -1061,6 +1061,9 @@ struct wlr_surface *wlr_surface_get_root_surface(struct wlr_surface *surface) { if (subsurface == NULL) { break; } + if (subsurface->parent == NULL) { + return NULL; + } surface = subsurface->parent; } return surface;