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:
-rw-r--r--source/blender/blenkernel/BKE_object.h1
-rw-r--r--source/blender/blenkernel/intern/object.c10
-rw-r--r--source/blender/src/editobject.c8
3 files changed, 9 insertions, 10 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 21c1e869ea2..a7e37425da7 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -51,6 +51,7 @@ void copy_objectflags(void);
struct SoftBody *copy_softbody(struct SoftBody *sb);
void update_base_layer(struct Object *ob);
void free_object(struct Object *ob);
+void object_free_modifiers(struct Object *ob);
void unlink_object(struct Object *ob);
int exist_object(struct Object *obtest);
void *add_camera(void);
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 46dc90ec3b4..c8feb7f89ce 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -172,12 +172,12 @@ static void copy_hooks(ListBase *new, ListBase *old)
}
-static void free_modifiers(ListBase *lb)
+void object_free_modifiers(Object *ob)
{
- while (lb->first) {
- ModifierData *md = lb->first;
+ while (ob->modifiers.first) {
+ ModifierData *md = ob->modifiers.first;
- BLI_remlink(lb, md);
+ BLI_remlink(&ob->modifiers, md);
modifier_free(md);
}
@@ -223,7 +223,7 @@ void free_object(Object *ob)
free_effects(&ob->effect);
BLI_freelistN(&ob->network);
free_properties(&ob->prop);
- free_modifiers(&ob->modifiers);
+ object_free_modifiers(ob);
free_sensors(&ob->sensors);
free_controllers(&ob->controllers);
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index 77561959a74..d3f50b2b57d 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -2170,6 +2170,7 @@ void convertmenu(void)
Mesh *oldme= ob->data;
DispListMesh *dlm;
DerivedMesh *dm;
+ ModifierData *md;
basedel = base;
@@ -2177,6 +2178,7 @@ void convertmenu(void)
ob1= copy_object(ob);
ob1->recalc |= OB_RECALC;
+ object_free_modifiers(ob1);
basen= MEM_mallocN(sizeof(Base), "duplibase");
*basen= *base;
@@ -2481,11 +2483,7 @@ static void copymenu_modifiers(Object *ob)
if (base->object->type==OB_MESH) {
if (event==NUM_MODIFIER_TYPES) {
- while (base->object->modifiers.first) {
- md = base->object->modifiers.first;
- BLI_remlink(&base->object->modifiers, md);
- modifier_free(md);
- }
+ object_free_modifiers(base->object);
for (md=ob->modifiers.first; md; md=md->next) {
ModifierData *nmd = modifier_new(md->type);