From 4e55d067ea3aacf0174518ac29a11336fdc6b11c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 26 Aug 2013 14:35:32 -0700 Subject: [PATCH] evdev: Initliaze device->link so we can wl_list_remove() without crashing We were testing for wl_list_empty() on a { NULL, NULL } list (which returns false) and then wl_list_remove()ing the device (which crashes). --- src/evdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index 26fe8665..29e32136 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -602,6 +602,7 @@ evdev_device_create(struct weston_seat *seat, const char *path, int device_fd) device->rel.dy = 0; device->dispatch = NULL; device->fd = device_fd; + wl_list_init(&device->link); ioctl(device->fd, EVIOCGNAME(sizeof(devname)), devname); devname[sizeof(devname) - 1] = '\0'; @@ -645,8 +646,7 @@ evdev_device_destroy(struct evdev_device *device) if (device->source) wl_event_source_remove(device->source); - if (!wl_list_empty(&device->link)) - wl_list_remove(&device->link); + wl_list_remove(&device->link); if (device->mtdev) mtdev_close_delete(device->mtdev); close(device->fd);