dnd: fix segfault on grabbing
authorPhilipp Brüschweiler <blei42@gmail.com>
Mon, 13 Aug 2012 18:04:54 +0000 (20:04 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 13 Aug 2012 18:39:41 +0000 (14:39 -0400)
Some cursor themes don't include a "grabbing" icon, causing a segfault.
This patch fixes this by just reverting to the stardard cursor instead.

https://bugs.freedesktop.org/show_bug.cgi?id=50487

clients/dnd.c

index 6f55e95..44c1541 100644 (file)
@@ -20,6 +20,7 @@
  * OF THIS SOFTWARE.
  */
 
+#include <assert.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -327,6 +328,12 @@ create_drag_cursor(struct dnd_drag *dnd_drag,
        cairo_t *cr;
 
        pointer = display_get_pointer_image(dnd->display, CURSOR_DRAGGING);
+       if (!pointer) {
+               fprintf(stderr, "WARNING: grabbing cursor image not found\n");
+               pointer = display_get_pointer_image(dnd->display,
+                                                   CURSOR_LEFT_PTR);
+               assert(pointer && "no cursor image found");
+       }
 
        rectangle.width = item_width + 2 * pointer->width;
        rectangle.height = item_height + 2 * pointer->height;