window: Don't crash if a cursor image failed to load.
authorDima Ryazanov <dima@gmail.com>
Wed, 9 May 2012 04:02:33 +0000 (21:02 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 9 May 2012 15:25:11 +0000 (11:25 -0400)
Signed-off-by: Dima Ryazanov <dima@gmail.com>
clients/window.c

index 2c59b23..72d36d3 100644 (file)
@@ -687,10 +687,14 @@ create_cursors(struct display *display)
        display->cursor_shm_pool = shm_pool_create(display, pool_size);
 
        for (i = 0; i < count; i++) {
-               if (!images[i])
+               cursor = &display->cursors[i];
+
+               if (!images[i]) {
+                       cursor->n_images = 0;
+                       cursor->images = NULL;
                        continue;
+               }
 
-               cursor = &display->cursors[i];
                create_cursor_from_images(display, cursor, images[i]);
 
                XcursorImagesDestroy(images[i]);
@@ -1958,6 +1962,9 @@ input_set_pointer_image(struct input *input, uint32_t time, int pointer)
        if (pointer == input->current_cursor)
                return;
 
+       if (display->cursors[pointer].n_images == 0)
+               return;
+
        image = &display->cursors[pointer].images[0];
 
        if (!image->surface)