[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17836] branches/blender2.5/blender/source /blender/blenkernel/intern/screen.c: 2.5:

Joshua Leung aligorith at gmail.com
Sun Dec 14 12:39:05 CET 2008


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

Log Message:
-----------
2.5:

Fixed more crashers in screen/region/area/spacetype freeing code... 

Hint to Ton: watch how you're getting the pointer to the next item in the list when freeing the list ;)

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

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c	2008-12-14 11:25:00 UTC (rev 17835)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c	2008-12-14 11:39:00 UTC (rev 17836)
@@ -57,10 +57,12 @@
 
 void BKE_spacetypes_free(void)
 {
-	SpaceType *st;
+	SpaceType *st, *stn;
 	
-	for(st= spacetypes.first; st; st= st->next)
+	for(st= spacetypes.first; st; st= stn) {
+		stn= st->next;
 		spacetype_free(st);
+	}
 	
 	BLI_freelistN(&spacetypes);
 }
@@ -100,17 +102,20 @@
 
 void BKE_spacedata_freelist(ListBase *lb)
 {
-	SpaceLink *sl;
-	ARegion *ar;
+	SpaceLink *sl, *sln;
+	ARegion *ar, *arn;
 	
-	for (sl= lb->first; sl; sl= sl->next) {
+	for (sl= lb->first; sl; sl= sln) {
 		SpaceType *st= BKE_spacetype_from_id(sl->spacetype);
+		sln= sl->next;
 		
 		if(st && st->free) 
 			st->free(sl);
 		/* regions for pushed spaces */
-		for(ar=sl->regionbase.first; ar; ar=ar->next)
+		for(ar=sl->regionbase.first; ar; ar=arn) {
+			arn= ar->next;
 			BKE_area_region_free(ar);
+		}
 		BLI_freelistN(&sl->regionbase);
 	}
 	





More information about the Bf-blender-cvs mailing list