tablet: fix a memory leak caused by an early return
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 17 Oct 2024 22:38:47 +0000 (08:38 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 17 Oct 2024 23:48:05 +0000 (09:48 +1000)
Previously we'd return early, failing to libwacom_destroy() the device.

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

src/evdev-tablet.c

index 38117f5c29da2258ccadab891e43af3b2d19c13c..075ae57bbe6e9906e8658700a8922cc33ef62b5c 100644 (file)
@@ -2596,8 +2596,6 @@ tablet_lookup_libwacom(struct evdev_device *device,
        const char *devnode;
        WacomDeviceDatabase *db;
        WacomDevice *libwacom_device = NULL;
-       const int *stylus_ids;
-       int nstyli;
        int vid = evdev_device_get_id_vendor(device);
 
        db = tablet_libinput_context(tablet)->libwacom.db;
@@ -2618,14 +2616,14 @@ tablet_lookup_libwacom(struct evdev_device *device,
         * lenovo pens so we use that as the flag of whether the tablet
         * is an AES tablet
         */
-       if (vid != VENDOR_ID_WACOM)
-               return;
-
-       stylus_ids = libwacom_get_supported_styli(libwacom_device, &nstyli);
-       for (int i = 0; i < nstyli; i++) {
-               if (stylus_ids[i] == 0x11) {
-                       *is_aes = true;
-                       break;
+       if (vid == VENDOR_ID_WACOM) {
+               int nstyli;
+               const int *stylus_ids = libwacom_get_supported_styli(libwacom_device, &nstyli);
+               for (int i = 0; i < nstyli; i++) {
+                       if (stylus_ids[i] == 0x11) {
+                               *is_aes = true;
+                               break;
+                       }
                }
        }