From d268bb2cc3b8b44b939d15530d7ba223db7a8520 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 3 Dec 2012 11:40:23 +0000 Subject: [PATCH] fix infintie delfn loop waiting to happen. SVN revision: 80048 --- src/bin/e_object.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/bin/e_object.c b/src/bin/e_object.c index 2210dc98f..373910019 100644 --- a/src/bin/e_object.c +++ b/src/bin/e_object.c @@ -314,18 +314,23 @@ e_object_del_attach_func_set(E_Object *obj, E_Object_Cleanup_Func func) EAPI void e_object_delfn_clear(E_Object *obj) { + E_Object_Delfn *dfn; + E_OBJECT_CHECK(obj); + if (obj->walking_list) + { + EINA_INLIST_FOREACH(obj->del_fn_list, dfn) + { + dfn->delete_me = 1; + } + return; + } while (obj->del_fn_list) { - E_Object_Delfn *dfn = (E_Object_Delfn *)obj->del_fn_list; - if (obj->walking_list) - dfn->delete_me = 1; - else - { - obj->del_fn_list = eina_inlist_remove(obj->del_fn_list, - EINA_INLIST_GET(dfn)); - free(dfn); - } + dfn = (E_Object_Delfn *)obj->del_fn_list; + obj->del_fn_list = eina_inlist_remove(obj->del_fn_list, + EINA_INLIST_GET(dfn)); + free(dfn); } }