diff options
author | Hermet Park <chuneon.park@samsung.com> | 2020-09-17 17:25:04 +0900 |
---|---|---|
committer | Hermet Park <chuneon.park@samsung.com> | 2020-09-17 17:25:05 +0900 |
commit | a2cc779c5d728daf2e468729474d20a3478ce434 (patch) | |
tree | 32dcb51c117d3d3eec2dfe8fe28b1f17cf8fb215 /src/lib/evas/canvas | |
parent | 02a1d426393590a74ee3292b41e4e939ad11c18b (diff) | |
download | efl-a2cc779c5d728daf2e468729474d20a3478ce434.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
Diffstat (limited to 'src/lib/evas/canvas')
-rw-r--r-- | src/lib/evas/canvas/evas_main.c | 14 |
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 * |