path: don't leak the udev device on failure
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 1 Nov 2018 06:19:20 +0000 (16:19 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 7 Nov 2018 05:03:52 +0000 (05:03 +0000)
If by sheer coincidence the device succeeds on the last try, we'd have a
leaking udev device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/path-seat.c

index 6cc7b3e..aa68780 100644 (file)
@@ -308,9 +308,6 @@ udev_device_from_devnode(struct libinput *libinput,
 
        while (dev && !udev_device_get_is_initialized(dev)) {
                udev_device_unref(dev);
-               msleep(10);
-               dev = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
-
                count++;
                if (count > 200) {
                        log_bug_libinput(libinput,
@@ -318,6 +315,8 @@ udev_device_from_devnode(struct libinput *libinput,
                                        devnode);
                        return NULL;
                }
+               msleep(10);
+               dev = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
        }
 
        return dev;