From 97749170496f8df1571471451a4cc5372442ce0b Mon Sep 17 00:00:00 2001 From: Jeffy Chen Date: Mon, 2 Sep 2019 10:26:09 +0800 Subject: [PATCH] clients: Add more sanity checks to catch destroyed window Add a sanity check to touch_handle_down() and data_device_enter() as what we did for pointer and keyboard. Signed-off-by: Jeffy Chen --- clients/window.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/clients/window.c b/clients/window.c index 3d1e8e4a..06a74321 100644 --- a/clients/window.c +++ b/clients/window.c @@ -3246,6 +3246,11 @@ touch_handle_down(void *data, struct wl_touch *wl_touch, float sx = wl_fixed_to_double(x_w); float sy = wl_fixed_to_double(y_w); + if (!surface) { + /* down event for a window we've just destroyed */ + return; + } + input->display->serial = serial; input->touch_focus = wl_surface_get_user_data(surface); if (!input->touch_focus) { @@ -3601,6 +3606,11 @@ data_device_enter(void *data, struct wl_data_device *data_device, float y = wl_fixed_to_double(y_w); char **p; + if (!surface) { + /* enter event for a window we've just destroyed */ + return; + } + window = wl_surface_get_user_data(surface); input->drag_enter_serial = serial; input->drag_focus = window,