From 5dc73937ff96e17a7b4e136a80dfec087604878d Mon Sep 17 00:00:00 2001 From: Kirill Primak Date: Sun, 13 Apr 2025 13:25:14 +0300 Subject: [PATCH] xdg-surface: ensure that the effective geom is not empty Fixes: 5c98d1a04a1439bf40c6e516086cfaff2d67f135 --- types/xdg_shell/wlr_xdg_surface.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c index 5652fc26c..3d3299f93 100644 --- a/types/xdg_shell/wlr_xdg_surface.c +++ b/types/xdg_shell/wlr_xdg_surface.c @@ -262,6 +262,10 @@ static void update_geometry(struct wlr_xdg_surface *surface) { wlr_surface_get_extents(surface->surface, &surface->geometry); wlr_box_intersection(&surface->geometry, &surface->current.geometry, &surface->geometry); + if (wlr_box_empty(&surface->geometry)) { + wl_resource_post_error(surface->resource, XDG_SURFACE_ERROR_INVALID_SIZE, + "the effective window geometry is empty"); + } } } else { wlr_surface_get_extents(surface->surface, &surface->geometry); @@ -332,10 +336,10 @@ static void xdg_surface_role_commit(struct wlr_surface *wlr_surface) { break; } - if (wlr_surface->mapped) { - update_geometry(surface); - } else if (wlr_surface_has_buffer(wlr_surface)) { + if (!wlr_surface->mapped && wlr_surface_has_buffer(wlr_surface)) { wlr_surface_map(wlr_surface); + } else { + update_geometry(surface); } }