From: cedric Date: Wed, 17 Jun 2009 12:38:15 +0000 (+0000) Subject: * ecore: Fix a segv during ecore_shutdown. X-Git-Tag: 2.0_alpha~194^2~1435 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4d58ec23c92bd454a360ecb3939e8b1a78f8ee9;p=framework%2Fuifw%2Fecore.git * ecore: Fix a segv during ecore_shutdown. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@41075 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/ecore/ecore_events.c b/src/lib/ecore/ecore_events.c index 8b32ca4..fd69557 100644 --- a/src/lib/ecore/ecore_events.c +++ b/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;