[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56698] trunk/blender/source/blender/ modifiers/intern: Fix #35317: crash with boolean modifier using an object whose library linked

Brecht Van Lommel brechtvanlommel at pandora.be
Sun May 12 11:14:08 CEST 2013


Revision: 56698
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56698
Author:   blendix
Date:     2013-05-12 09:14:07 +0000 (Sun, 12 May 2013)
Log Message:
-----------
Fix #35317: crash with boolean modifier using an object whose library linked
mesh datablock went missing.

Modified Paths:
--------------
    trunk/blender/source/blender/modifiers/intern/MOD_array.c
    trunk/blender/source/blender/modifiers/intern/MOD_boolean.c

Modified: trunk/blender/source/blender/modifiers/intern/MOD_array.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_array.c	2013-05-12 08:42:24 UTC (rev 56697)
+++ trunk/blender/source/blender/modifiers/intern/MOD_array.c	2013-05-12 09:14:07 UTC (rev 56698)
@@ -346,9 +346,9 @@
 	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);

Modified: trunk/blender/source/blender/modifiers/intern/MOD_boolean.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_boolean.c	2013-05-12 08:42:24 UTC (rev 56697)
+++ trunk/blender/source/blender/modifiers/intern/MOD_boolean.c	2013-05-12 09:14:07 UTC (rev 56698)
@@ -136,7 +136,7 @@
 	 * 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 {




More information about the Bf-blender-cvs mailing list