From 19ce6dce92387b8a18a1d15c463da2daea71be16 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Wed, 17 Jun 2009 12:38:15 +0000 Subject: [PATCH] * ecore: Fix a segv during ecore_shutdown. SVN revision: 41075 --- legacy/ecore/src/lib/ecore/ecore_events.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/legacy/ecore/src/lib/ecore/ecore_events.c b/legacy/ecore/src/lib/ecore/ecore_events.c index 8b32ca4539..fd69557930 100644 --- a/legacy/ecore/src/lib/ecore/ecore_events.c +++ b/legacy/ecore/src/lib/ecore/ecore_events.c @@ -298,15 +298,15 @@ _ecore_event_shutdown(void) while (events) _ecore_event_del(events); for (i = 0; i < event_handlers_num; i++) { - while (event_handlers[i]) + while ((eh = event_handlers[i])) { event_handlers[i] = (Ecore_Event_Handler *) eina_inlist_remove(EINA_INLIST_GET(event_handlers[i]), EINA_INLIST_GET(event_handlers[i])); - ECORE_MAGIC_SET(event_handlers[i], ECORE_MAGIC_NONE); - free(event_handlers[i]); + ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE); + if (!eh->delete_me) free(eh); } } EINA_LIST_FREE(event_handlers_delete_list, eh) - free(eh); + free(eh); if (event_handlers) free(event_handlers); event_handlers = NULL; event_handlers_num = 0;