Enlightenment CVS committal Author : englebass Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_container.c e_manager.c Log Message: Safe looping on shutdown. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_container.c,v retrieving revision 1.114 retrieving revision 1.115 diff -u -3 -r1.114 -r1.115 --- e_container.c 25 Mar 2007 22:44:59 -0000 1.114 +++ e_container.c 5 Apr 2007 11:59:17 -0000 1.115 @@ -918,7 +918,7 @@ static void _e_container_free(E_Container *con) { - Evas_List *l, *tmp; + Evas_List *l; ecore_x_window_del(con->event_win); /* We can't use e_object_del here, because border adds a ref to itself @@ -939,11 +939,12 @@ } } */ - for (l = con->zones; l;) + l = con->zones; + con->zones = NULL; + while (l) { - tmp = l; - l = l->next; - e_object_del(E_OBJECT(tmp->data)); + e_object_del(E_OBJECT(l->data)); + l = evas_list_remove_list(l, l); } con->manager->containers = evas_list_remove(con->manager->containers, con); e_canvas_del(con->bg_ecore_evas); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v retrieving revision 1.63 retrieving revision 1.64 diff -u -3 -r1.63 -r1.64 --- e_manager.c 25 Mar 2007 22:45:00 -0000 1.63 +++ e_manager.c 5 Apr 2007 11:59:17 -0000 1.64 @@ -55,12 +55,14 @@ EAPI int e_manager_shutdown(void) { - Evas_List *l, *tmp; - for (l = managers; l;) + Evas_List *l; + + l = managers; + managers = NULL; + while (l) { - tmp = l; - l = l->next; - e_object_del(E_OBJECT(tmp->data)); + e_object_del(E_OBJECT(l->data)); + l = evas_list_remove_list(l, l); } if (frame_extents) { @@ -491,7 +493,7 @@ static void _e_manager_free(E_Manager *man) { - Evas_List *l, *tmp; + Evas_List *l; while (man->handlers) { @@ -501,11 +503,12 @@ man->handlers = evas_list_remove_list(man->handlers, man->handlers); ecore_event_handler_del(h); } - for (l = man->containers; l;) + l = man->containers; + man->containers = NULL; + while (l) { - tmp = l; - l = l->next; - e_object_del(E_OBJECT(tmp->data)); + e_object_del(E_OBJECT(l->data)); + l = evas_list_remove_list(l, l); } if (man->root != man->win) { ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs