- bug fix, convert modifiers should free modifiers from new object

This commit is contained in:
2005-08-09 16:02:23 +00:00
parent 98741ec436
commit c5a223056a
3 changed files with 9 additions and 10 deletions

View File

@@ -51,6 +51,7 @@ void copy_objectflags(void);
struct SoftBody *copy_softbody(struct SoftBody *sb); struct SoftBody *copy_softbody(struct SoftBody *sb);
void update_base_layer(struct Object *ob); void update_base_layer(struct Object *ob);
void free_object(struct Object *ob); void free_object(struct Object *ob);
void object_free_modifiers(struct Object *ob);
void unlink_object(struct Object *ob); void unlink_object(struct Object *ob);
int exist_object(struct Object *obtest); int exist_object(struct Object *obtest);
void *add_camera(void); void *add_camera(void);

View File

@@ -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) { while (ob->modifiers.first) {
ModifierData *md = lb->first; ModifierData *md = ob->modifiers.first;
BLI_remlink(lb, md); BLI_remlink(&ob->modifiers, md);
modifier_free(md); modifier_free(md);
} }
@@ -223,7 +223,7 @@ void free_object(Object *ob)
free_effects(&ob->effect); free_effects(&ob->effect);
BLI_freelistN(&ob->network); BLI_freelistN(&ob->network);
free_properties(&ob->prop); free_properties(&ob->prop);
free_modifiers(&ob->modifiers); object_free_modifiers(ob);
free_sensors(&ob->sensors); free_sensors(&ob->sensors);
free_controllers(&ob->controllers); free_controllers(&ob->controllers);

View File

@@ -2170,6 +2170,7 @@ void convertmenu(void)
Mesh *oldme= ob->data; Mesh *oldme= ob->data;
DispListMesh *dlm; DispListMesh *dlm;
DerivedMesh *dm; DerivedMesh *dm;
ModifierData *md;
basedel = base; basedel = base;
@@ -2177,6 +2178,7 @@ void convertmenu(void)
ob1= copy_object(ob); ob1= copy_object(ob);
ob1->recalc |= OB_RECALC; ob1->recalc |= OB_RECALC;
object_free_modifiers(ob1);
basen= MEM_mallocN(sizeof(Base), "duplibase"); basen= MEM_mallocN(sizeof(Base), "duplibase");
*basen= *base; *basen= *base;
@@ -2481,11 +2483,7 @@ static void copymenu_modifiers(Object *ob)
if (base->object->type==OB_MESH) { if (base->object->type==OB_MESH) {
if (event==NUM_MODIFIER_TYPES) { if (event==NUM_MODIFIER_TYPES) {
while (base->object->modifiers.first) { object_free_modifiers(base->object);
md = base->object->modifiers.first;
BLI_remlink(&base->object->modifiers, md);
modifier_free(md);
}
for (md=ob->modifiers.first; md; md=md->next) { for (md=ob->modifiers.first; md; md=md->next) {
ModifierData *nmd = modifier_new(md->type); ModifierData *nmd = modifier_new(md->type);