jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9fbb5e0e5dabc3e019f5d3d26da8066f3a176a28
commit 9fbb5e0e5dabc3e019f5d3d26da8066f3a176a28 Author: Jean-Philippe Andre <[email protected]> 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. @fix (backported as c58e293d343396859daabdd348) --- 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 81dcd3f..2b81d4e 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_efl_object_constructor(Eo *obj, Efl_Event_Key_Data *pd EINA_UNUSE 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_efl_object_destructor(Eo *obj, Efl_Event_Key_Data *pd) +{ + _efl_event_key_free(pd); + efl_destructor(efl_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 555aadb..e85b8ae 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 (Efl.Object, Efl.Event, Efl.Input.State, Efl.Event.Input) implements { class.destructor; Efl.Object.constructor; + Efl.Object.destructor; Efl.Event.instance_get; Efl.Event.reset; Efl.Event.dup; --
