[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14112] trunk/blender/source/blender/ blenkernel:

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Mar 14 19:21:06 CET 2008


Revision: 14112
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14112
Author:   blendix
Date:     2008-03-14 19:21:06 +0100 (Fri, 14 Mar 2008)

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

Fix for bug #8467: a softbody hair crash.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_particle.h
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/blenkernel/intern/particle_system.c

Modified: trunk/blender/source/blender/blenkernel/BKE_particle.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_particle.h	2008-03-14 18:16:54 UTC (rev 14111)
+++ trunk/blender/source/blender/blenkernel/BKE_particle.h	2008-03-14 18:21:06 UTC (rev 14112)
@@ -212,7 +212,7 @@
 void psys_free_settings(struct ParticleSettings *part);
 void free_child_path_cache(struct ParticleSystem *psys);
 void psys_free_path_cache(struct ParticleSystem *psys);
-void free_hair(struct ParticleSystem *psys);
+void free_hair(struct ParticleSystem *psys, int softbody);
 void free_keyed_keys(struct ParticleSystem *psys);
 void psys_free(struct Object * ob, struct ParticleSystem * psys);
 void psys_free_children(struct ParticleSystem *psys);

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c	2008-03-14 18:16:54 UTC (rev 14111)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c	2008-03-14 18:21:06 UTC (rev 14112)
@@ -275,7 +275,8 @@
 	if(part->pd)
 		MEM_freeN(part->pd);
 }
-void free_hair(ParticleSystem *psys)
+
+void free_hair(ParticleSystem *psys, int softbody)
 {
 	ParticleData *pa;
 	int i, totpart=psys->totpart;
@@ -288,7 +289,7 @@
 
 	psys->flag &= ~PSYS_HAIR_DONE;
 
-	if(psys->soft) {
+	if(softbody && psys->soft) {
 		sbFree(psys->soft);
 		psys->soft = NULL;
 	}
@@ -342,7 +343,7 @@
 
 		psys_free_path_cache(psys);
 
-		free_hair(psys);
+		free_hair(psys, 1);
 
 		free_keyed_keys(psys);
 

Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c	2008-03-14 18:16:54 UTC (rev 14111)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c	2008-03-14 18:21:06 UTC (rev 14112)
@@ -4476,7 +4476,7 @@
 			part->rotfrom = PART_ROT_IINCR;
 		}
 		else
-			free_hair(psys);
+			free_hair(psys, 1);
 
 		psys->softflag= 0;
 		psys->recalc &= ~PSYS_TYPE;
@@ -4656,8 +4656,9 @@
 	if(psys->part->type==PART_HAIR && hair_needs_recalc(psys)){
 		float hcfra=0.0f;
 		int i;
-		free_hair(psys);
 
+		free_hair(psys, 0);
+
 		/* first step is negative so particles get killed and reset */
 		psys->cfra=1.0f;
 





More information about the Bf-blender-cvs mailing list