ecore: Fix legacy message handlers destruction

This commit is contained in:
Jean-Philippe Andre 2017-12-15 19:08:59 +09:00
parent 5dbfb7961f
commit 796b1dd566
1 changed files with 13 additions and 2 deletions

View File

@ -171,6 +171,12 @@ _ecore_event_message_handler_handler_del(Eo *obj EINA_UNUSED, Ecore_Event_Messag
data = h->data;
if (pd->handlers_walking > 0)
{
if (h->to_add)
{
h->to_add = EINA_FALSE;
pd->handlers_add = eina_list_remove(pd->handlers_add, h);
}
h->delete_me = EINA_TRUE;
pd->handlers_delete = eina_list_append(pd->handlers_delete, h);
}
@ -284,9 +290,14 @@ _ecore_event_message_handler_efl_object_destructor(Eo *obj, Ecore_Event_Message_
{
free(h);
}
for (i = 0; i < pd->event_type_count; i++)
for (i = 0; i <= pd->event_type_count; i++)
{
EINA_INLIST_FREE(pd->handlers[i], h) free(h);
EINA_INLIST_FREE(pd->handlers[i], h)
{
pd->handlers[i] = eina_inlist_remove(pd->handlers[i],
EINA_INLIST_GET(h));
free(h);
}
}
free(pd->handlers);
pd->handlers = NULL;