e_input: fixed leak regarding ecore_device removal 89/266489/1 submit/tizen/20210608.012855
authorSung-Jin Park <sj76.park@samsung.com>
Sat, 5 Jun 2021 01:04:38 +0000 (10:04 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Sat, 5 Jun 2021 08:40:19 +0000 (17:40 +0900)
Change-Id: Ib5049eed67ad5b6f9600dbe3c5e67bcf2fba8d87
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/bin/e_input_inputs.c

index c33a8c3d3e8c244d9078eb81c1c49f42d3ea2c7e..f9412cda273ccc9d836971b0eef7df081a50941d 100644 (file)
@@ -224,19 +224,24 @@ _e_input_remove_ecore_device(E_Input_Evdev *edev, Ecore_Device_Class clas)
          if (!identifier) continue;
          if ((ecore_device_class_get(dev) == clas) && (!strcmp(identifier, edev->path)))
            {
-              if (edev->ecore_dev) edev->ecore_dev = NULL;
+              if (edev->ecore_dev)
+                {
+                   ecore_device_unref(dev);
+                   edev->ecore_dev = NULL;
+                }
               else if (edev->ecore_dev_list)
                 {
                    EINA_LIST_FOREACH_SAFE(edev->ecore_dev_list, ll, ll_next, data)
                      {
                         if (data == dev)
                           {
+                             ecore_device_unref(dev);
                              edev->ecore_dev_list = eina_list_remove_list(edev->ecore_dev_list, ll);
                           }
                      }
                 }
-              ecore_device_del(dev);
               _e_input_ecore_device_event(dev, EINA_FALSE);
+              ecore_device_del(dev);
               return EINA_TRUE;
            }
       }
@@ -301,6 +306,7 @@ _e_input_device_remove(E_Input_Evdev *edev)
                   WRN("Invalid device is left. name: %s, identifier: %s, clas: %s\n",
                       ecore_device_name_get(data), ecore_device_description_get(data),
                       _e_input_ecore_device_class_to_string(ecore_device_class_get(data)));
+                  ecore_device_unref(data);
                   ecore_device_del(data);
                }
           }