Revision: 28630
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28630
Author:   campbellbarton
Date:     2010-05-06 23:31:16 +0200 (Thu, 06 May 2010)

Log Message:
-----------
fix for duplicating cloth which could crash on freeing
- effector list wasnt NULL'd on copying a particle system
- copying an object would initialize the cloth modifier, then copy it, witout 
freeing its effector weights created in cloth_init().

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/modifiers/intern/MOD_cloth.c

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c     2010-05-06 
20:10:37 UTC (rev 28629)
+++ trunk/blender/source/blender/blenkernel/intern/object.c     2010-05-06 
21:31:16 UTC (rev 28630)
@@ -1140,12 +1140,13 @@
        }
 
        BLI_duplicatelist(&psysn->targets, &psys->targets);
-       
+
        psysn->pathcache= NULL;
        psysn->childcache= NULL;
        psysn->edit= NULL;
        psysn->frand= NULL;
        psysn->pdd= NULL;
+       psysn->effectors= NULL;
        
        psysn->pathcachebufs.first = psysn->pathcachebufs.last = NULL;
        psysn->childcachebufs.first = psysn->childcachebufs.last = NULL;

Modified: trunk/blender/source/blender/modifiers/intern/MOD_cloth.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_cloth.c   2010-05-06 
20:10:37 UTC (rev 28629)
+++ trunk/blender/source/blender/modifiers/intern/MOD_cloth.c   2010-05-06 
21:31:16 UTC (rev 28630)
@@ -123,15 +123,19 @@
 {
        ClothModifierData *clmd = (ClothModifierData*) md;
        ClothModifierData *tclmd = (ClothModifierData*) target;
-       
-       if(tclmd->sim_parms)
+
+       if(tclmd->sim_parms) {
+               if(tclmd->sim_parms->effector_weights)
+                       MEM_freeN(tclmd->sim_parms->effector_weights);
                MEM_freeN(tclmd->sim_parms);
+       }
+
        if(tclmd->coll_parms)
                MEM_freeN(tclmd->coll_parms);
        
        BKE_ptcache_free_list(&tclmd->ptcaches);
        tclmd->point_cache = NULL;
-       
+
        tclmd->sim_parms = MEM_dupallocN(clmd->sim_parms);
        if(clmd->sim_parms->effector_weights)
                tclmd->sim_parms->effector_weights = 
MEM_dupallocN(clmd->sim_parms->effector_weights);


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to