Revision: 17795
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17795
Author:   aligorith
Date:     2008-12-12 00:05:18 +0100 (Fri, 12 Dec 2008)

Log Message:
-----------
2.5 - Fixed crashes when closing windows 

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c       
2008-12-11 23:02:33 UTC (rev 17794)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c       
2008-12-11 23:05:18 UTC (rev 17795)
@@ -164,15 +164,19 @@
 /* don't free screen itself */
 void free_screen(bScreen *sc)
 {
-       ScrArea *sa;
-       ARegion *ar;
+       ScrArea *sa, *san;
+       ARegion *ar, *arn;
        
-       for(ar=sc->regionbase.first; ar; ar=ar->next)
+       for(ar=sc->regionbase.first; ar; ar=arn) {
+               arn= ar->next;
                BKE_area_region_free(ar);
+       }
        BLI_freelistN(&sc->regionbase);
        
-       for(sa= sc->areabase.first; sa; sa= sa->next)
+       for(sa= sc->areabase.first; sa; sa= san) {
+               san= sa->next;
                BKE_screen_area_free(sa);
+       }
        
        BLI_freelistN(&sc->vertbase);
        BLI_freelistN(&sc->edgebase);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
   2008-12-11 23:02:33 UTC (rev 17794)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
   2008-12-11 23:05:18 UTC (rev 17795)
@@ -3530,17 +3530,21 @@
 
 static void ui_handler_remove_region(bContext *C)
 {
+       bScreen *sc;
        ARegion *ar;
 
        ar= C->region;
-       if(ar==NULL) return;
+       if(ar == NULL) return;
 
        uiFreeBlocks(C, &ar->uiblocks);
+       
+       sc= C->screen;
+       if(sc == NULL) return;
 
        /* delayed apply callbacks, but not for screen level regions, those
         * we rather do at the very end after closing them all, which will
         * be done in ui_handler_region/window */
-       if(BLI_findindex(&C->screen->regionbase, ar) == -1)
+       if(BLI_findindex(&sc->regionbase, ar) == -1)
                ui_apply_but_funcs_after(C);
 }
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to