From 60f8817f371123b9c36b3ff1120eec1e8f9e3d10 Mon Sep 17 00:00:00 2001 From: Tom Hochstein Date: Mon, 31 Oct 2016 19:21:58 -0500 Subject: [PATCH weston] xwayland: Fix crash when run with no input device Starting an xterm with no input device led to a crash because weston_wm_pick_seat() was returning garbage and weston_wm_selection_init() was trying to use the garbage. Signed-off-by: Tom Hochstein --- xwayland/selection.c | 10 +++++++--- xwayland/window-manager.c | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) Index: weston-1.11.0/xwayland/selection.c =================================================================== --- weston-1.11.0.orig/xwayland/selection.c 2016-05-19 16:36:04.000000000 -0500 +++ weston-1.11.0/xwayland/selection.c 2016-11-01 14:32:48.000000000 -0500 @@ -708,6 +708,8 @@ wm->atom.clipboard, mask); seat = weston_wm_pick_seat(wm); + if (seat != NULL) + return; wm->selection_listener.notify = weston_wm_set_selection; wl_signal_add(&seat->selection_signal, &wm->selection_listener); Index: weston-1.11.0/xwayland/window-manager.c =================================================================== --- weston-1.11.0.orig/xwayland/window-manager.c 2016-05-19 16:36:04.000000000 -0500 +++ weston-1.11.0/xwayland/window-manager.c 2016-11-01 11:47:14.549606964 -0500 @@ -1303,8 +1303,10 @@ struct weston_seat * weston_wm_pick_seat(struct weston_wm *wm) { - return container_of(wm->server->compositor->seat_list.next, - struct weston_seat, link); + struct wl_list *seats = wm->server->compositor->seat_list.next; + if (wl_list_empty(seats)) + return NULL; + return container_of(seats, struct weston_seat, link); } static struct weston_seat *