diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-05-12 13:14:07 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-05-12 13:14:07 +0400 |
commit | 698f1b56037ea9c6eec170a0f3b74b7a46eaae1d (patch) | |
tree | 53c93803e3313d17105ec2546ea4340f335c6df8 /source/blender/modifiers/intern | |
parent | cf96fdfc65b069528171cee1cdd893f364ff4b7f (diff) |
Fix #35317: crash with boolean modifier using an object whose library linked
mesh datablock went missing.
Diffstat (limited to 'source/blender/modifiers/intern')
-rw-r--r-- | source/blender/modifiers/intern/MOD_array.c | 4 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_boolean.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index 1c067892702..5e90aa10294 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -346,9 +346,9 @@ static DerivedMesh *arrayModifier_doArray(ArrayModifierData *amd, BMOpSlot *slot_targetmap = NULL; /* for weldop */ /* need to avoid infinite recursion here */ - if (amd->start_cap && amd->start_cap != ob) + if (amd->start_cap && amd->start_cap != ob && amd->start_cap->type == OB_MESH) start_cap = mesh_get_derived_final(scene, amd->start_cap, CD_MASK_MESH); - if (amd->end_cap && amd->end_cap != ob) + if (amd->end_cap && amd->end_cap != ob && amd->end_cap->type == OB_MESH) end_cap = mesh_get_derived_final(scene, amd->end_cap, CD_MASK_MESH); unit_m4(offset); diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 04198d9feb9..2be2f350a73 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -136,7 +136,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, * in other scenes when compositing */ if (bmd->object != ob) { /* weak! - but we can too easy end up with circular dep crash otherwise */ - if (modifiers_findByType(bmd->object, eModifierType_Boolean) == NULL) { + if (bmd->object->type == OB_MESH && modifiers_findByType(bmd->object, eModifierType_Boolean) == NULL) { dm = mesh_get_derived_final(md->scene, bmd->object, CD_MASK_MESH); } else { |