[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32464] trunk/blender/source/blender/ blenkernel/intern: Fix for [#24237] Hair dynamics with zero particles generates a segmentation fault
Janne Karhu
jhkarh at gmail.com
Thu Oct 14 11:01:03 CEST 2010
Revision: 32464
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32464
Author: jhk
Date: 2010-10-14 11:01:03 +0200 (Thu, 14 Oct 2010)
Log Message:
-----------
Fix for [#24237] Hair dynamics with zero particles generates a segmentation fault
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/particle.c
trunk/blender/source/blender/blenkernel/intern/particle_system.c
trunk/blender/source/blender/blenkernel/intern/pointcache.c
Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c 2010-10-14 08:15:10 UTC (rev 32463)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c 2010-10-14 09:01:03 UTC (rev 32464)
@@ -402,6 +402,7 @@
modifier_free((ModifierData*)psys->clmd);
psys->clmd = NULL;
+ psys->pointcache = BKE_ptcache_add(&psys->ptcaches);
}
else {
cloth_free_modifier(ob, psys->clmd);
Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c 2010-10-14 08:15:10 UTC (rev 32463)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c 2010-10-14 09:01:03 UTC (rev 32464)
@@ -4016,8 +4016,13 @@
switch(part->type) {
case PART_HAIR:
{
+ /* nothing to do so bail out early */
+ if(psys->totpart == 0 && part->totpart == 0) {
+ psys_free_path_cache(psys, NULL);
+ free_hair(ob, psys, 0);
+ }
/* (re-)create hair */
- if(hair_needs_recalc(psys)) {
+ else if(hair_needs_recalc(psys)) {
float hcfra=0.0f;
int i, recalc = psys->recalc;
Modified: trunk/blender/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pointcache.c 2010-10-14 08:15:10 UTC (rev 32463)
+++ trunk/blender/source/blender/blenkernel/intern/pointcache.c 2010-10-14 09:01:03 UTC (rev 32464)
@@ -2993,13 +2993,17 @@
void BKE_ptcache_validate(PointCache *cache, int framenr)
{
- cache->flag |= PTCACHE_SIMULATION_VALID;
- cache->simframe = framenr;
+ if(cache) {
+ cache->flag |= PTCACHE_SIMULATION_VALID;
+ cache->simframe = framenr;
+ }
}
void BKE_ptcache_invalidate(PointCache *cache)
{
- cache->flag &= ~PTCACHE_SIMULATION_VALID;
- cache->simframe = 0;
- cache->last_exact = MIN2(cache->startframe, 0);
+ if(cache) {
+ cache->flag &= ~PTCACHE_SIMULATION_VALID;
+ cache->simframe = 0;
+ cache->last_exact = MIN2(cache->startframe, 0);
+ }
}
More information about the Bf-blender-cvs
mailing list