forked from enlightenment/efl
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 c58e293d34
)
This commit is contained in:
parent
40250fda22
commit
9fbb5e0e5d
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue