[Bf-blender-cvs] [245a1ce] mesh-transfer-data: Forbid dependency cycle of DataTransfer modifiers, this is just not possible.

Bastien Montagne noreply at git.blender.org
Thu Nov 13 14:28:27 CET 2014


Commit: 245a1ce60343749eb5f7816a7883bf74b208e2ed
Author: Bastien Montagne
Date:   Thu Nov 13 14:22:46 2014 +0100
Branches: mesh-transfer-data
https://developer.blender.org/rB245a1ce60343749eb5f7816a7883bf74b208e2ed

Forbid dependency cycle of DataTransfer modifiers, this is just not possible.

(Here I get a segfault inside asan lib iteself, when doing that...)

===================================================================

M	source/blender/modifiers/intern/MOD_datatransfer.c

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_datatransfer.c b/source/blender/modifiers/intern/MOD_datatransfer.c
index 5fafc7f..78d7980 100644
--- a/source/blender/modifiers/intern/MOD_datatransfer.c
+++ b/source/blender/modifiers/intern/MOD_datatransfer.c
@@ -165,6 +165,24 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
 	SpaceTransform space_transform_data;
 	SpaceTransform *space_transform = (dtmd->flags & MOD_DATATRANSFER_OBSRC_TRANSFORM) ? &space_transform_data : NULL;
 
+	/* We check source object does not have a data transfer mod from our object too,
+	 * cycle dependency here his deadly! */
+	{
+		ModifierData *md_it = dtmd->ob_source->modifiers.first;
+
+		for (; md_it; md_it = md_it->next) {
+			if (md_it->type == md->type) {
+				DataTransferModifierData *dtmd_it = (DataTransferModifierData *) md_it;
+				if (dtmd_it->ob_source && (dtmd_it->ob_source == ob)) {
+					modifier_setError(md, "This modifier does not support cycle dependencies, source object '%s' "
+					                      "already uses this object as data transfer source",
+					                  &dtmd_it->ob_source->id.name[2]);
+					return dm;
+				}
+			}
+		}
+	}
+
 	if (space_transform) {
 		BLI_SPACE_TRANSFORM_SETUP(space_transform, ob, dtmd->ob_source);
 	}




More information about the Bf-blender-cvs mailing list