jpeg pushed a commit to branch efl-1.18. http://git.enlightenment.org/core/efl.git/commit/?id=c58e293d343396859daabdd348da6e4b2ea8ddc8
commit c58e293d343396859daabdd348da6e4b2ea8ddc8 Author: Jean-Philippe Andre <jp.an...@samsung.com> Date: Tue Aug 16 14:57:02 2016 +0900 evas: Fix potential memleak in event info objects The new event info being an eo object, it needs to be properly cleaned. I believe this memleak would not show up much in massif or other checking tools, as it's a stringshare leak. Also, most of those event objects will in fact be reused and never deleted. --- src/lib/evas/canvas/efl_event_key.c | 21 +++++++++++++++++---- src/lib/evas/canvas/efl_event_key.eo | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/lib/evas/canvas/efl_event_key.c b/src/lib/evas/canvas/efl_event_key.c index bce7c7c..8ee7acb 100644 --- a/src/lib/evas/canvas/efl_event_key.c +++ b/src/lib/evas/canvas/efl_event_key.c @@ -76,6 +76,22 @@ _efl_event_key_eo_base_constructor(Eo *obj, Efl_Event_Key_Data *pd EINA_UNUSED) return obj; } +static inline void +_efl_event_key_free(Efl_Event_Key_Data *pd) +{ + eina_stringshare_del(pd->key); + eina_stringshare_del(pd->keyname); + eina_stringshare_del(pd->string); + eina_stringshare_del(pd->compose); +} + +EOLIAN static void +_efl_event_key_eo_base_destructor(Eo *obj, Efl_Event_Key_Data *pd) +{ + _efl_event_key_free(pd); + eo_destructor(eo_super(obj, MY_CLASS)); +} + EOLIAN static void _efl_event_key_pressed_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, Eina_Bool val) { @@ -151,10 +167,7 @@ _efl_event_key_key_code_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd) EOLIAN static void _efl_event_key_efl_event_reset(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd) { - eina_stringshare_del(pd->key); - eina_stringshare_del(pd->keyname); - eina_stringshare_del(pd->string); - eina_stringshare_del(pd->compose); + _efl_event_key_free(pd); memset(pd, 0, sizeof(*pd)); pd->eo = obj; pd->fake = EINA_TRUE; diff --git a/src/lib/evas/canvas/efl_event_key.eo b/src/lib/evas/canvas/efl_event_key.eo index 897dd46..384aa75 100644 --- a/src/lib/evas/canvas/efl_event_key.eo +++ b/src/lib/evas/canvas/efl_event_key.eo @@ -54,6 +54,7 @@ class Efl.Event.Key (Eo.Base, Efl.Event, Efl.Input.State, Efl.Event.Input) implements { class.destructor; Eo.Base.constructor; + Eo.Base.destructor; Efl.Event.instance_get; Efl.Event.reset; Efl.Event.dup; --