libinput: allow evdev_device_set_output(dev, NULL)
Removing the output association from an evdev_device is more than just setting the pointer to NULL, one also needs to remove the destroy listener and flag the destroy listener as unused (notify == NULL). evdev_device_set_output() can already remove associations, so let it also handle an assignment to NULL output. Fix notify_output_destroy() to handle removing an association correctly. Previously, the listener was left "used", which would mean the next call to evdev_device_set_output() would have wl_list_remove()'d, accessing freed memory. This could be triggered by having a touchscreen with a specified output association, and unplugging then re-plugging the corresponding output. Signed-off-by:Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net>
Loading
Please register or sign in to comment