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);
}
{
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;