discomfitor pushed a commit to branch enlightenment-0.20. http://git.enlightenment.org/core/enlightenment.git/commit/?id=75d967cba361eed39c0198b2cb086784d65031a3
commit 75d967cba361eed39c0198b2cb086784d65031a3 Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Tue Apr 26 10:41:00 2016 -0400 handle recursion more effectively in e_menu_hide_all() there were recent changes to evas object deletion mechanics which caused this to begin crashing due to recent changes to evas object deletion mechanics --- src/bin/e_menu.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index cf686ca..f7a4036 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -182,10 +182,10 @@ e_menu_shutdown(void) E_API void e_menu_hide_all(void) { - E_Menu *m; - - EINA_LIST_FREE(_e_active_menus, m) + while (_e_active_menus) { + E_Menu *m; + m = eina_list_data_get(_e_active_menus); if (m->post_deactivate_cb.func) m->post_deactivate_cb.func(m->post_deactivate_cb.data, m); m->active = 0; @@ -193,6 +193,7 @@ e_menu_hide_all(void) e_comp_object_util_autoclose(NULL, NULL, NULL, NULL); _e_menu_unrealize(m); m->in_active_list = 0; + _e_active_menus = eina_list_remove_list(_e_active_menus, _e_active_menus); e_object_unref(E_OBJECT(m)); } } --