diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-01-23 09:42:45 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-01-23 09:42:45 +0400 |
commit | 281e094e16b49bd1c3aa211d5d000c4a211c97ef (patch) | |
tree | c29bdcf093c8a83cb58c5f758bb1e34bc6196600 /source/blender/modifiers/intern/MOD_boolean.c | |
parent | 833104e647c6ace00390d39c32e65c7845273f05 (diff) |
workaround [#32866] Crash by cyclic use of Boolean Modifier
officially - modifiers shouldn't calc other objects derived mesh, but in some cases its needed at the moment for certain scenes, so just disallow booleans depending on booleans.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_boolean.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_boolean.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 0a48003fc81..a97ca2f9243 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -135,7 +135,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, * in some cases the depsgraph fails us - especially for objects * in other scenes when compositing */ if (bmd->object != ob) { - dm = mesh_get_derived_final(md->scene, bmd->object, CD_MASK_MESH); + /* weak! - but we can too easy end up with circular dep crash otherwise */ + if (modifiers_findByType(bmd->object, eModifierType_Boolean) == false) { + dm = mesh_get_derived_final(md->scene, bmd->object, CD_MASK_MESH); + } + else { + dm = bmd->object->derivedFinal; + } } else { dm = NULL; |