[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