When being called on a device which is not in the "input" subsystem, or doesn't
have an "input" parent, it got stuck in an endless loop. Unfortunately this
includes the virtual/input/mice multiplexer, which exposes this bug on just
about every system.
/* walk up the parental chain until we find the real input device; the
* argument is very likely a subdevice of this, like eventN */
- while (udev_device_get_sysattr_value(dev, "capabilities/key") == NULL)
+ while (dev != NULL && udev_device_get_sysattr_value(dev, "capabilities/key") == NULL)
dev = udev_device_get_parent(dev);
/* Use this as a flag that input devices were detected, so that this