Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_misc.c 


Log Message:
Fix segv caused by list access recursion.
Set freed lists to NULL to more easily detect late references.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_misc.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ewl_misc.c  26 May 2005 23:02:24 -0000      1.8
+++ ewl_misc.c  27 May 2005 04:48:12 -0000      1.9
@@ -173,7 +173,6 @@
        }
 
        ewl_embed_list = ecore_list_new();
-       ecore_list_set_free_cb(ewl_embed_list, ewl_widget_destroy);
        ewl_window_list = ecore_list_new();
        ecore_idle_enterer_add(ewl_idle_render, NULL);
 
@@ -196,9 +195,15 @@
        /*
         * Destroy all existing widgets.
         */
-       if (ewl_embed_list)
+       if (ewl_embed_list) {
+               Ewl_Widget *emb;
+
+               while ((emb = ecore_list_remove_first(ewl_embed_list)))
+                       ewl_widget_destroy(emb);
+               ewl_garbage_collect();
                ecore_list_destroy(ewl_embed_list);
-       ewl_garbage_collect();
+               ewl_embed_list = NULL;
+       }
 
        /*
         * Shut down the various EWL subsystems cleanly.
@@ -210,14 +215,22 @@
        /*
         * Free internal accounting lists.
         */
-       if (ewl_window_list)
+       if (ewl_window_list) {
                ecore_list_destroy(ewl_window_list);
+               ewl_window_list = NULL;
+       }
        ecore_list_destroy(configure_list);
+       configure_list = NULL;
        ecore_list_destroy(realize_list);
+       realize_list = NULL;
        ecore_list_destroy(destroy_list);
+       destroy_list = NULL;
        ecore_list_destroy(free_evas_list);
+       free_evas_list = NULL;
        ecore_list_destroy(free_evas_object_list);
+       free_evas_object_list = NULL;
        ecore_list_destroy(child_add_list);
+       child_add_list = NULL;
 
        edje_shutdown();
 




-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to