window.c: Fix SIGSEGV in pointer_handle_motion
authorPaul Winwood <paul.winwood@hotmail.co.uk>
Thu, 29 Aug 2013 09:52:54 +0000 (10:52 +0100)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 30 Aug 2013 04:17:51 +0000 (21:17 -0700)
Move null pointer check and assignments before first window dereference.

clients/window.c

index cee436c..4f63132 100644 (file)
@@ -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);