shell: Make sure we actually have a resource in end_busy_cursor
authorDerek Foreman <derekf@osg.samsung.com>
Fri, 11 Sep 2015 19:30:39 +0000 (14:30 -0500)
committerBryce Harrington <bryce@osg.samsung.com>
Mon, 14 Sep 2015 18:33:31 +0000 (11:33 -0700)
It's actually possible to get here after the surface has been destroyed,
especially when running client apps under valgrind.

That probably shouldn't be able to segfault the compositor.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
desktop-shell/shell.c

index 034d39b..ecc42c5 100644 (file)
@@ -2119,6 +2119,7 @@ end_busy_cursor(struct weston_compositor *compositor, struct wl_client *client)
 
                grab = (struct shell_grab *) pointer->grab;
                if (grab->grab.interface == &busy_cursor_grab_interface &&
+                   grab->shsurf->resource &&
                    wl_resource_get_client(grab->shsurf->resource) == client) {
                        shell_grab_end(grab);
                        free(grab);