From 2b6e4f242230d99470ef70c7c00f1809a098d200 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Mon, 7 Nov 2011 13:25:17 +0000 Subject: Bugfix [#29064] armature with curve contraint - crash Spline IK and Auto-IK working together on the same bone chain could crash due to the somewhat hacky way that they were sharing the same list for the "iktree" forest. Resolved by doing what I should have done from the beginning, and made Spline-IK save its ik chains off into a separate list. While this fixes the crash, it might be worth investigating outright disabling this from working in this case, since it can be a bit confusing to have it appear to not work. --- source/blender/ikplugin/intern/iksolver_plugin.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/blender/ikplugin/intern') diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c index 787766f0fa6..2a83052c827 100644 --- a/source/blender/ikplugin/intern/iksolver_plugin.c +++ b/source/blender/ikplugin/intern/iksolver_plugin.c @@ -526,12 +526,14 @@ void iksolver_execute_tree(struct Scene *scene, struct Object *ob, struct bPose /* 6. apply the differences to the channels, we need to calculate the original differences first */ - for(a=0; atotchannel; a++) + for(a=0; atotchannel; a++) { make_dmats(tree->pchan[a]); + } - for(a=0; atotchannel; a++) + for(a=0; atotchannel; a++) { /* sets POSE_DONE */ where_is_ik_bone(tree->pchan[a], tree->basis_change[a]); + } /* 7. and free */ BLI_remlink(&pchan->iktree, tree); -- cgit v1.2.3