diff --git a/src/backend/wayland/wl_xdg.c b/src/backend/wayland/wl_xdg.c index 64d7f25..0cf562e 100644 --- a/src/backend/wayland/wl_xdg.c +++ b/src/backend/wayland/wl_xdg.c @@ -454,6 +454,10 @@ handle_toplevel_destroy(struct wl_listener *listener, void *data) wfree(view->wm_command[ci]); wfree(view->wm_command); } + /* Clear popup resource user_data so the resource destroy callback + * doesn't access the freed view. */ + if (view->popup) + wl_resource_set_user_data(view->popup, NULL); /* Save frame_id before freeing view */ WNativeWindow frame_id = view->frame_id; wfree(view);