From: Pekka Paalanen Date: Fri, 3 Aug 2012 11:39:11 +0000 (+0300) Subject: compositor-drm, evdev: don't crash on missing keyboard X-Git-Tag: 0.1.0~163^2~63 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e427ef8cb70fdef565fba899230cd41eba694ebc;p=platform%2Fupstream%2Flibinput.git compositor-drm, evdev: don't crash on missing keyboard Weston's notify_keyboard_focus_*() assume that a keyboard is present, if they are called. With evdev, there might not always be a keyboard. Also clean up the variable definition in evdev_notify_keyborad_focus(). I read that function through many times and finally had to grep where does 'all_keys' come from. Signed-off-by: Pekka Paalanen --- diff --git a/src/evdev.c b/src/evdev.c index 7efbc7d..09275f4 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -561,10 +561,14 @@ evdev_notify_keyboard_focus(struct weston_seat *seat, struct evdev_input_device *device; struct wl_array keys; unsigned int i, set; - char evdev_keys[(KEY_CNT + 7) / 8], all_keys[(KEY_CNT + 7) / 8]; + char evdev_keys[(KEY_CNT + 7) / 8]; + char all_keys[(KEY_CNT + 7) / 8]; uint32_t *k; int ret; + if (!seat->seat.keyboard) + return; + memset(all_keys, 0, sizeof all_keys); wl_list_for_each(device, evdev_devices, link) { memset(evdev_keys, 0, sizeof evdev_keys);