Revision: 17933
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17933
Author:   blendix
Date:     2008-12-19 01:18:16 +0100 (Fri, 19 Dec 2008)

Log Message:
-----------
2.5: fix for crash reading regions of inactive spaces in an area.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c

Modified: 
branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     
2008-12-18 23:34:19 UTC (rev 17932)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     
2008-12-19 00:18:16 UTC (rev 17933)
@@ -4143,6 +4143,15 @@
        }
 }
 
+static void direct_link_region(FileData *fd, ARegion *ar)
+{
+       ar->handlers.first= ar->handlers.last= NULL;
+       ar->uiblocks.first= ar->uiblocks.last= NULL;
+       ar->regiondata= NULL;
+       ar->swinid= 0;
+       ar->type= NULL;
+}
+
 static void direct_link_screen(FileData *fd, bScreen *sc)
 {
        ScrArea *sa;
@@ -4212,6 +4221,11 @@
                }
                
                for (sl= sa->spacedata.first; sl; sl= sl->next) {
+                       link_list(fd, &(sl->regionbase));
+
+                       for(ar= sl->regionbase.first; ar; ar= ar->next)
+                               direct_link_region(fd, ar);
+
                        if (sl->spacetype==SPACE_VIEW3D) {
                                View3D *v3d= (View3D*) sl;
                                v3d->bgpic= newdataadr(fd, v3d->bgpic);
@@ -4275,13 +4289,8 @@
                        }
                }
                
-               for(ar= sa->regionbase.first; ar; ar= ar->next) {
-                       ar->handlers.first= ar->handlers.last= NULL;
-                       ar->uiblocks.first= ar->uiblocks.last= NULL;
-                       ar->regiondata= NULL;
-                       ar->swinid= 0;
-                       ar->type= NULL;
-               }
+               for(ar= sa->regionbase.first; ar; ar= ar->next)
+                       direct_link_region(fd, ar);
                
                sa->actionzones.first= sa->actionzones.last= NULL;
 

Modified: 
branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c    
2008-12-18 23:34:19 UTC (rev 17932)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c    
2008-12-19 00:18:16 UTC (rev 17933)
@@ -1651,6 +1651,9 @@
 
                        sl= sa->spacedata.first;
                        while(sl) {
+                               for(ar= sl->regionbase.first; ar; ar= ar->next)
+                                       writestruct(wd, DATA, "ARegion", 1, ar);
+
                                if(sl->spacetype==SPACE_VIEW3D) {
                                        View3D *v3d= (View3D *) sl;
                                        writestruct(wd, DATA, "View3D", 1, v3d);


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

Reply via email to