discomfitor pushed a commit to branch master.

commit a0240e9f5616414d2ba44875b701585537ba1c0c
Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Apr 16 12:24:40 2013 +0100

    fix infinite loop on menu zoomap deletion
---
 src/bin/e_menu.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c
index 692f461..1374cb7 100644
--- a/src/bin/e_menu.c
+++ b/src/bin/e_menu.c
@@ -1271,6 +1271,7 @@ _e_menu_free(E_Menu *m)
    Eina_List *l, *l_next;
    E_Menu_Item *mi;
    E_Menu_Category *cat = NULL;
+   Evas_Object *o;
 
    /* the foreign menu items */
    if (m->category) cat = eina_hash_find(_e_menu_categories, m->category);
@@ -1286,8 +1287,9 @@ _e_menu_free(E_Menu *m)
    if (m->parent_item)
      m->parent_item->submenu = NULL;
    /* del callback causes this to unrealize the menu */
-   if (m->bg_object_wrap) evas_object_del(m->bg_object_wrap);
+   o = m->bg_object_wrap;
    m->bg_object_wrap = NULL;
+   if (o) evas_object_del(o);
    EINA_LIST_FOREACH_SAFE(m->items, l, l_next, mi)
      e_object_del(E_OBJECT(mi));
    if (m->in_active_list)
@@ -1394,10 +1396,12 @@ static void
 _e_menu_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, 
void *event_info EINA_UNUSED)
 {
    E_Menu *m = data;
+   Evas_Object *o;
 
    m->bg_object = NULL;
-   evas_object_del(m->bg_object_wrap);
+   o = m->bg_object_wrap;
    m->bg_object_wrap = NULL;
+   if (o) evas_object_del(o);
    _e_menu_unrealize(m);
 }
 

-- 

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter

Reply via email to