From fcd16883df6fd46cd9fde98430b7f758e8803540 Mon Sep 17 00:00:00 2001 From: "Myoungwoon Roy, Kim" Date: Thu, 21 Dec 2017 09:02:07 +0900 Subject: [PATCH] Remove unused device variables and fix a leak As we do not ever used the udev_devices created from udev_device_new_from_syspath in these functions, remove them. If we cannot create a new udev device, then we should free the previously created udev enumeration from above. Change-Id: Ia9eaf5b3fa22bc17d685293ceb5ade8ebf6c5401 --- src/lib/eeze/eeze_udev_find.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/lib/eeze/eeze_udev_find.c b/src/lib/eeze/eeze_udev_find.c index 06bbb4c..cc7eb47 100644 --- a/src/lib/eeze/eeze_udev_find.c +++ b/src/lib/eeze/eeze_udev_find.c @@ -28,7 +28,10 @@ eeze_udev_find_similar_from_syspath(const char *syspath) return NULL; if (!(device = _new_device(syspath))) - return NULL; + { + udev_enumerate_unref(en); + return NULL; + } vendor = udev_device_get_property_value(device, "ID_VENDOR_ID"); @@ -229,6 +232,7 @@ eeze_udev_find_by_type(Eeze_Udev_Type etype, case EEZE_UDEV_TYPE_V4L: udev_enumerate_add_match_subsystem(en, "video4linux"); break; + case EEZE_UDEV_TYPE_BLUETOOTH: udev_enumerate_add_match_subsystem(en, "bluetooth"); break; @@ -315,7 +319,6 @@ eeze_udev_find_by_filter(const char *subsystem, { _udev_enumerate *en; _udev_list_entry *devs, *cur; - _udev_device *device; const char *devname; Eina_List *ret = NULL; @@ -337,15 +340,11 @@ eeze_udev_find_by_filter(const char *subsystem, udev_list_entry_foreach(cur, devs) { devname = udev_list_entry_get_name(cur); - device = udev_device_new_from_syspath(udev, devname); - if (name) - if (!strstr(devname, name)) - goto out; + if (name && (!strstr(devname, name))) + continue; ret = eina_list_append(ret, eina_stringshare_add(devname)); -out: - udev_device_unref(device); } udev_enumerate_unref(en); return ret; @@ -357,7 +356,6 @@ eeze_udev_find_by_sysattr(const char *sysattr, { _udev_enumerate *en; _udev_list_entry *devs, *cur; - _udev_device *device; const char *devname; Eina_List *ret = NULL; @@ -375,9 +373,7 @@ eeze_udev_find_by_sysattr(const char *sysattr, udev_list_entry_foreach(cur, devs) { devname = udev_list_entry_get_name(cur); - device = udev_device_new_from_syspath(udev, devname); ret = eina_list_append(ret, eina_stringshare_add(devname)); - udev_device_unref(device); } udev_enumerate_unref(en); return ret; @@ -388,24 +384,21 @@ eeze_udev_find_by_subsystem_sysname(const char *subsystem, const char *sysname) { _udev_enumerate *en; _udev_list_entry *devs, *cur; - _udev_device *device; const char *devname; Eina_List *ret = NULL; - if (!sysname) return NULL; - en = udev_enumerate_new(udev); if (!en) return NULL; + if (subsystem) udev_enumerate_add_match_subsystem(en, subsystem); + if (sysname) udev_enumerate_add_match_sysname(en, sysname); + udev_enumerate_scan_devices(en); devs = udev_enumerate_get_list_entry(en); udev_list_entry_foreach(cur, devs) { devname = udev_list_entry_get_name(cur); - device = - udev_device_new_from_subsystem_sysname(udev, subsystem, sysname); ret = eina_list_append(ret, eina_stringshare_add(devname)); - udev_device_unref(device); } udev_enumerate_unref(en); return ret; -- 2.7.4