From 20d3022076d842d51d620ab725e3d8eed18e95da Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 21 Apr 2011 09:38:09 +0000 Subject: following on from last commit r36263. copying metaball, lattice and armature datablocks while in editmode could segfault when they were freed, NULL these pointers on copy. --- source/blender/blenkernel/intern/armature.c | 5 +++++ source/blender/blenkernel/intern/curve.c | 1 + source/blender/blenkernel/intern/lattice.c | 4 +++- source/blender/blenkernel/intern/mball.c | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index a0511f5da2e..a79637eea73 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -214,6 +214,11 @@ bArmature *copy_armature(bArmature *arm) }; newArm->act_bone= newActBone; + + newArm->edbo= NULL; + newArm->act_edbone= NULL; + newArm->sketch= NULL; + return newArm; } diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 7a5e0d5c33d..f68533803e7 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -201,6 +201,7 @@ Curve *copy_curve(Curve *cu) cun->editnurb= NULL; cun->editfont= NULL; + cun->selboxes= NULL; #if 0 // XXX old animation system /* single user ipo too */ diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 9d93bb1c25d..d308ccbf876 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -219,7 +219,9 @@ Lattice *copy_lattice(Lattice *lt) ltn->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert"); copy_dverts(ltn->dvert, lt->dvert, tot); } - + + ltn->editlatt= NULL; + return ltn; } diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 74e31238b96..6fe9e378290 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -132,6 +132,9 @@ MetaBall *copy_mball(MetaBall *mb) id_us_plus((ID *)mbn->mat[a]); } mbn->bb= MEM_dupallocN(mb->bb); + + mbn->editelems= NULL; + mbn->lastelem= NULL; return mbn; } -- cgit v1.2.3