summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWoochanlee <wc0917.lee@samsung.com>2020-09-17 17:23:10 +0900
committerHermet Park <chuneon.park@samsung.com>2020-09-17 17:23:10 +0900
commitca2900be8a109e3e205a8c49ff11a1f822ae96b7 (patch)
tree9fa4cddea37dd5fa8497fee9ab4757d9363736bb
parente5958965e80724b335fc8b0470d46586e7f29051 (diff)
downloadefl-ca2900be8a109e3e205a8c49ff11a1f822ae96b7.tar.gz
evas_main: Fix memory leak.
Summary: If the inlist has only one item when it removed. the data is not freed in descturctor. Reviewers: Hermet, raster, vtorri Reviewed By: Hermet Subscribers: vtorri, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12147
-rw-r--r--src/lib/evas/canvas/evas_main.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 6a84b0c59b..40d242339a 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -1523,8 +1523,11 @@ _evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer, Eina_Bo
EINA_INLIST_FOREACH(pseat->pointers, pdata)
if (pdata->pointer == pointer)
{
- pseat->pointers = eina_inlist_remove(pseat->pointers, EINA_INLIST_GET(pdata));
- if (!nofree) free(pdata);
+ if (!nofree)
+ {
+ pseat->pointers = eina_inlist_remove(pseat->pointers, EINA_INLIST_GET(pdata));
+ free(pdata);
+ }
hit = pseat;
break;
}
@@ -1532,8 +1535,11 @@ _evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer, Eina_Bo
EINA_SAFETY_ON_NULL_RETURN(hit);
if (hit->pointers) return;
hit->object.in = eina_list_free(hit->object.in);
- edata->seats = eina_inlist_remove(edata->seats, EINA_INLIST_GET(hit));
- if (!nofree) free(hit);
+ if (!nofree)
+ {
+ edata->seats = eina_inlist_remove(edata->seats, EINA_INLIST_GET(hit));
+ free(hit);
+ }
}
Eina_List *