From 66c57294946bf9e2412b5eb2732b8e8ee082ff65 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Mon, 24 May 2021 19:48:43 +0900 Subject: [PATCH] eeze: remove memory leak Summary: udev_enumerate_new needs to call udev_enumerate_unref before leaving. Reviewers: raster, Hermet, herb, jsuya Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12280 --- src/lib/eeze/eeze_net.c | 8 +++++++- src/lib/eeze/eeze_udev_find.c | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/eeze/eeze_net.c b/src/lib/eeze/eeze_net.c index 11fcc26d46..997eb22c73 100644 --- a/src/lib/eeze/eeze_net.c +++ b/src/lib/eeze/eeze_net.c @@ -77,10 +77,15 @@ eeze_net_new(const char *name) syspath = eina_stringshare_add(name); break; } - if (!device) return NULL; + if (!device) + { + udev_enumerate_unref(en); + return NULL; + } net = calloc(1, sizeof(Eeze_Net)); if (!net) { + udev_enumerate_unref(en); udev_device_unref(device); return NULL; } @@ -91,6 +96,7 @@ eeze_net_new(const char *name) idx = udev_device_get_sysattr_value(net->device, "ifindex"); if (!idx) { + udev_enumerate_unref(en); udev_device_unref(net->device); eina_stringshare_del(net->syspath); eina_stringshare_del(net->name); diff --git a/src/lib/eeze/eeze_udev_find.c b/src/lib/eeze/eeze_udev_find.c index 3b1e5ef926..251d020354 100644 --- a/src/lib/eeze/eeze_udev_find.c +++ b/src/lib/eeze/eeze_udev_find.c @@ -95,7 +95,11 @@ eeze_udev_find_unlisted_similar(Eina_List *list) return NULL; device = _new_device(dev); - if (!device) continue; + if (!device) + { + udev_enumerate_unref(en); + continue; + } if ((vendor = udev_device_get_property_value(device, "ID_VENDOR_ID"))) udev_enumerate_add_match_property(en, "ID_VENDOR_ID", vendor);