Don't segfault clients when cursor isn't found
authorDaniel Stone <daniel@fooishbar.org>
Mon, 18 Jun 2012 18:31:12 +0000 (19:31 +0100)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 18 Jun 2012 19:09:40 +0000 (15:09 -0400)
If we can't find a cursor for whatever reason, don't crash the client in
pointer_surface_frame_callback.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
clients/window.c

index 436f862..36caeb3 100644 (file)
@@ -2312,8 +2312,7 @@ pointer_surface_frame_callback(void *data, struct wl_callback *callback,
                               uint32_t time)
 {
        struct input *input = data;
-       struct wl_cursor *cursor =
-               input->display->cursors[input->current_cursor];
+       struct wl_cursor *cursor;
        int i;
 
        if (callback) {
@@ -2324,6 +2323,9 @@ pointer_surface_frame_callback(void *data, struct wl_callback *callback,
 
        if (input->current_cursor == CURSOR_UNSET)
                return;
+       cursor = input->display->cursors[input->current_cursor];
+       if (!cursor)
+               return;
 
        /* FIXME We don't have the current time on the first call so we set
         * the animation start to the time of the first frame callback. */