From b22bf57e21c4c344294d149718b33fc5482405ff Mon Sep 17 00:00:00 2001 From: Paul Winwood Date: Thu, 29 Aug 2013 10:52:54 +0100 Subject: [PATCH] window.c: Fix SIGSEGV in pointer_handle_motion Move null pointer check and assignments before first window dereference. --- clients/window.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/clients/window.c b/clients/window.c index cee436c..4f63132 100644 --- a/clients/window.c +++ b/clients/window.c @@ -2904,6 +2904,12 @@ pointer_handle_motion(void *data, struct wl_pointer *pointer, float sx = wl_fixed_to_double(sx_w); float sy = wl_fixed_to_double(sy_w); + input->sx = sx; + input->sy = sy; + + if (!window) + return; + /* when making the window smaller - e.g. after a unmaximise we might * still have a pending motion event that the compositor has picked * based on the old surface dimensions @@ -2912,12 +2918,6 @@ pointer_handle_motion(void *data, struct wl_pointer *pointer, sy > window->main_surface->allocation.height) return; - input->sx = sx; - input->sy = sy; - - if (!window) - return; - if (!(input->grab && input->grab_button)) { widget = window_find_widget(window, sx, sy); input_set_focus_widget(input, widget, sx, sy); -- 2.7.4