Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-04-11 16:29:29 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-04-11 16:29:29 +0400
commita02937d86ccb30f0cc08ef451634595fb45726c6 (patch)
tree888b31961f3bb2fbdae144bbc35e89779a775cdb /source/blender/blenkernel
parent716f40018286fbeeb02a736b4f5f39dffca0b1e9 (diff)
Fix for bug #8920: particles reactor crash and memory leak.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/particle.c3
-rw-r--r--source/blender/blenkernel/intern/particle_system.c8
2 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index c64b5fdceaf..9aa866eaf13 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -370,6 +370,9 @@ void psys_free(Object *ob, ParticleSystem * psys)
psys->part=0;
}
+ if(psys->reactevents.first)
+ BLI_freelistN(&psys->reactevents);
+
if(psys->pointcache)
BKE_ptcache_free(psys->pointcache);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index cd0d6b5d113..ebde51d4c3d 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -143,6 +143,9 @@ void psys_reset(ParticleSystem *psys, int mode)
psys->totpart= 0;
psys->totkeyed= 0;
psys->flag &= ~(PSYS_HAIR_DONE|PSYS_KEYED);
+
+ if(psys->reactevents.first)
+ BLI_freelistN(&psys->reactevents);
}
}
@@ -1701,7 +1704,10 @@ void reset_particle(ParticleData *pa, ParticleSystem *psys, ParticleSystemModifi
/*TODO: get precise location of particle at birth*/
state.time=cfra;
- psys_get_particle_state(tob,tpsys,pa->num,&state,1);
+ if(pa->num == -1)
+ memset(&state, 0, sizeof(state));
+ else
+ psys_get_particle_state(tob,tpsys,pa->num,&state,1);
psys_get_from_key(&state,loc,nor,rot,0);
QuatMulVecf(rot,vtan);