discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=8b8703cfa68578858b90b2dbf7393abde4c6d824
commit 8b8703cfa68578858b90b2dbf7393abde4c6d824 Author: Mike Blumenkrantz <[email protected]> Date: Fri Jun 23 17:41:39 2017 -0400 use safe list iterating when clearing a gadget site during shutdown demo gadgets are immediately removed when deleted, leading to list corruption unless a safe iterator is used --- src/bin/e_gadget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c index cb0d4da6d..c5ccd4dd2 100644 --- a/src/bin/e_gadget.c +++ b/src/bin/e_gadget.c @@ -1283,7 +1283,7 @@ _site_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e { E_Gadget_Site *zgs = data; E_Gadget_Config *zgc; - Eina_List *l; + Eina_List *l, *ll; E_FREE_FUNC(zgs->events, evas_object_del); zgs->layout = NULL; @@ -1292,7 +1292,7 @@ _site_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e zgs->style_cb = NULL; E_FREE_FUNC(zgs->move_handler, ecore_event_handler_del); E_FREE_FUNC(zgs->mouse_up_handler, ecore_event_handler_del); - EINA_LIST_FOREACH(zgs->gadgets, l, zgc) + EINA_LIST_FOREACH_SAFE(zgs->gadgets, l, ll, zgc) evas_object_del(zgc->display); if (zgs->name) return; eina_stringshare_del(zgs->name); --
