Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/ikplugin/intern/itasc_plugin.cpp')
-rw-r--r--source/blender/ikplugin/intern/itasc_plugin.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/ikplugin/intern/itasc_plugin.cpp b/source/blender/ikplugin/intern/itasc_plugin.cpp
index 2cb3a32ae3e..f4720b7fc41 100644
--- a/source/blender/ikplugin/intern/itasc_plugin.cpp
+++ b/source/blender/ikplugin/intern/itasc_plugin.cpp
@@ -326,11 +326,19 @@ static int initialize_chain(Object *ob, bPoseChannel *pchan_tip, bConstraint *co
break;
for(; a<size && t<tree->totchannel && tree->pchan[t]==chanlist[segcount-a-1]; a++, t++);
}
- parent= a-1;
+
segcount= segcount-a;
target->tip= tree->totchannel + segcount - 1;
if (segcount > 0) {
+ for(parent = a - 1; parent < tree->totchannel; parent++)
+ if(tree->pchan[parent] == chanlist[segcount-1]->parent)
+ break;
+
+ /* shouldn't happen, but could with dependency cycles */
+ if(parent == tree->totchannel)
+ parent = a - 1;
+
/* resize array */
newsize= tree->totchannel + segcount;
oldchan= tree->pchan;