diff --git a/src/shell.c b/src/shell.c index a5e653ec..badfd0c1 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1130,12 +1130,14 @@ touch_move_grab_down(struct weston_touch_grab *grab, uint32_t time, static void touch_move_grab_up(struct weston_touch_grab *grab, uint32_t time, int touch_id) { - struct shell_touch_grab *shell_grab = container_of(grab, - struct shell_touch_grab, - grab); + struct weston_touch_move_grab *move = + (struct weston_touch_move_grab *) container_of( + grab, struct shell_touch_grab, grab); - if (grab->touch->seat->num_tp == 0) - shell_touch_grab_end(shell_grab); + if (grab->touch->seat->num_tp == 0) { + shell_touch_grab_end(&move->base); + free(move); + } } static void