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

Ton Roosendaal ton at blender.org
Sun Dec 14 17:27:22 CET 2008


Hi Joshua,

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

Your fixes are not correct; functions like free-space and free-region  
etc. do not free the data itself!

The crashes are somewhere else...

-Ton-

------------------------------------------------------------------------
Ton Roosendaal  Blender Foundation   ton at blender.org    www.blender.org
Blender Institute BV  Entrepotdok 57A  1018AD Amsterdam The Netherlands

On 14 Dec, 2008, at 12:39, Joshua Leung wrote:

> 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);
>  	}
>  	
>
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>



More information about the Bf-taskforce25 mailing list