pad: don't print a clobbered errno
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 22 Oct 2024 02:15:04 +0000 (12:15 +1000)
committerMarge Bot <emma+marge@anholt.net>
Tue, 22 Oct 2024 18:14:15 +0000 (18:14 +0000)
is_litest_device() may change errno since it calls into libudev.

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1069>

src/evdev-tablet-pad-leds.c

index 7419bb5b7fddd30ff642e1ae58ab9ddf4003c972..93278b440bc12ce969aaea43f8ebe8a9b16ff740 100644 (file)
@@ -213,15 +213,15 @@ pad_group_new(struct pad_dispatch *pad,
                struct pad_mode_led *led;
 
                led = pad_led_new(libinput, syspath, group_index, nleds);
-               if (!led)
+               if (!led) {
+                       rc = -errno;
                        goto error;
-
+               }
                list_insert(&group->led_list, &led->link);
        }
 
        rc = pad_led_group_get_mode(group);
        if (rc < 0) {
-               errno = -rc;
                goto error;
        }
 
@@ -233,7 +233,7 @@ error:
        if (!is_litest_device(pad->device))
                evdev_log_error(pad->device,
                                "unable to init LED group: %s\n",
-                               strerror(errno));
+                               strerror(-rc));
        pad_led_group_destroy(&group->base);
 
        return NULL;