diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-04-11 16:29:29 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-04-11 16:29:29 +0400 |
commit | a02937d86ccb30f0cc08ef451634595fb45726c6 (patch) | |
tree | 888b31961f3bb2fbdae144bbc35e89779a775cdb /source/blender/blenkernel | |
parent | 716f40018286fbeeb02a736b4f5f39dffca0b1e9 (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.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/particle_system.c | 8 |
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); |