From 1e4d36143e3c6644d21868a61128c02a330cd28d Mon Sep 17 00:00:00 2001 From: lkn Date: Tue, 23 Jun 2026 23:43:32 +0200 Subject: [PATCH] fix crash: validate last_hovered_view before LEAVE event When a dialog is closed, its views are freed but last_hovered_view may still point to them. Use W_IsValidView() guard before accessing the stale pointer. --- src/backend/wayland/wl_pointer_motion.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/wayland/wl_pointer_motion.c b/src/backend/wayland/wl_pointer_motion.c index 5b22c16..e04021b 100644 --- a/src/backend/wayland/wl_pointer_motion.c +++ b/src/backend/wayland/wl_pointer_motion.c @@ -117,10 +117,12 @@ handle_pointer_motion(struct wl_listener *listener, void *data) } W_WL_EnqueueEvent(wmscr, &wev, mtarget); /* Synthesize ENTER/LEAVE for WINGs child view transitions. */ + extern Bool W_IsValidView(W_View *view); if (mtarget != wl_state.last_hovered_view) { WMEvent cev; memset(&cev, 0, sizeof(cev)); - if (wl_state.last_hovered_view) { + if (wl_state.last_hovered_view + && W_IsValidView(wl_state.last_hovered_view)) { cev.type = WME_LEAVE; cev.window = wl_state.last_hovered_view->window; cev.u.crossing.window = cev.window;