discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=5764bf680e6f05f6092f7546a326cec7dd68db20

commit 5764bf680e6f05f6092f7546a326cec7dd68db20
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));
      }
 }

-- 


Reply via email to