[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56508] trunk/blender/source/blender/ collada: Fix #35229: collada crash exporting constraints with no target set .

Brecht Van Lommel brechtvanlommel at pandora.be
Mon May 6 13:12:00 CEST 2013


Revision: 56508
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56508
Author:   blendix
Date:     2013-05-06 11:12:00 +0000 (Mon, 06 May 2013)
Log Message:
-----------
Fix #35229: collada crash exporting constraints with no target set.

Modified Paths:
--------------
    trunk/blender/source/blender/collada/AnimationExporter.cpp
    trunk/blender/source/blender/collada/SceneExporter.cpp

Modified: trunk/blender/source/blender/collada/AnimationExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/AnimationExporter.cpp	2013-05-06 09:44:56 UTC (rev 56507)
+++ trunk/blender/source/blender/collada/AnimationExporter.cpp	2013-05-06 11:12:00 UTC (rev 56508)
@@ -199,12 +199,16 @@
 			 *	- ct->matrix members have not yet been calculated here! 
 			 */
 			cti->get_constraint_targets(con, &targets);
-			if (cti) {
-				for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) {
-					obtar = ct->tar;
+
+			for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) {
+				obtar = ct->tar;
+
+				if (obtar)
 					find_frames(obtar, frames);
-				}
 			}
+
+			if (cti->flush_constraint_targets)
+				cti->flush_constraint_targets(con, &targets, 1);
 		}
 	}
 }
@@ -1546,9 +1550,15 @@
 			cti->get_constraint_targets(con, &targets);
 			for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) {
 				obtar = ct->tar;
-				BKE_animsys_evaluate_animdata(scene, &obtar->id, obtar->adt, ctime, ADT_RECALC_ANIM);
-				BKE_object_where_is_calc_time(scene, obtar, ctime);
+
+				if (obtar) {
+					BKE_animsys_evaluate_animdata(scene, &obtar->id, obtar->adt, ctime, ADT_RECALC_ANIM);
+					BKE_object_where_is_calc_time(scene, obtar, ctime);
+				}
 			}
+
+			if (cti->flush_constraint_targets)
+				cti->flush_constraint_targets(con, &targets, 1);
 		}
 	}
 	BKE_object_where_is_calc_time(scene, ob, ctime);

Modified: trunk/blender/source/blender/collada/SceneExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/SceneExporter.cpp	2013-05-06 09:44:56 UTC (rev 56507)
+++ trunk/blender/source/blender/collada/SceneExporter.cpp	2013-05-06 11:12:00 UTC (rev 56508)
@@ -215,13 +215,16 @@
 				Object *obtar;
 			
 				cti->get_constraint_targets(con, &targets);
-				if (cti) {
-					for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) {
-						obtar = ct->tar;
-						std::string tar_id(id_name(obtar));
-						colladaNode.addExtraTechniqueChildParameter("blender",con_tag,"target_id",tar_id);
-					}
+
+				for (ct = (bConstraintTarget *)targets.first; ct; ct = ct->next) {
+					obtar = ct->tar;
+					std::string tar_id((obtar) ? id_name(obtar) : "");
+					colladaNode.addExtraTechniqueChildParameter("blender",con_tag,"target_id",tar_id);
 				}
+
+				if (cti->flush_constraint_targets)
+					cti->flush_constraint_targets(con, &targets, 1);
+
 			}
 
 			con = con->next;




More information about the Bf-blender-cvs mailing list