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

This commit is contained in:
Daniel Dunbar 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);
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);

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) {
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);

View File

@ -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);