diff options
author | Campbell Barton <campbell@blender.org> | 2022-02-02 10:02:13 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-02-02 10:02:13 +0300 |
commit | cabc9506f9ace9f89f4a6d92dff676284e3a989f (patch) | |
tree | 9dc8f0f02d86d1eecb1277cacce221ab25a4430c /source | |
parent | 709f67cbf0be66cbf6f23a38c89e5cf62071d8a0 (diff) |
Fix crash in recent pose-bone transform cleanup
ff5e8e6d535374891e09bc0e6ceb7059a22bdd53 dereferenced a NULL pointer
when dragging a bone with a connected parent in pose-mode.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/transform/transform_convert_armature.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/source/blender/editors/transform/transform_convert_armature.c b/source/blender/editors/transform/transform_convert_armature.c index 2a696dd0593..04a8d462924 100644 --- a/source/blender/editors/transform/transform_convert_armature.c +++ b/source/blender/editors/transform/transform_convert_armature.c @@ -751,28 +751,30 @@ void createTransPose(TransInfo *t) tc->data_len++; - if (has_translate_rotate[0] && has_translate_rotate[1]) { - continue; - } + if (has_translate_rotate != NULL) { + if (has_translate_rotate[0] && has_translate_rotate[1]) { + continue; + } - if (has_targetless_ik(pchan) == NULL) { - if (pchan->parent && (bone->flag & BONE_CONNECTED)) { - if (bone->flag & BONE_HINGE_CHILD_TRANSFORM) { - has_translate_rotate[0] = true; + if (has_targetless_ik(pchan) == NULL) { + if (pchan->parent && (bone->flag & BONE_CONNECTED)) { + if (bone->flag & BONE_HINGE_CHILD_TRANSFORM) { + has_translate_rotate[0] = true; + } } - } - else { - if ((pchan->protectflag & OB_LOCK_LOC) != OB_LOCK_LOC) { - has_translate_rotate[0] = true; + else { + if ((pchan->protectflag & OB_LOCK_LOC) != OB_LOCK_LOC) { + has_translate_rotate[0] = true; + } + } + if ((pchan->protectflag & OB_LOCK_ROT) != OB_LOCK_ROT) { + has_translate_rotate[1] = true; } } - if ((pchan->protectflag & OB_LOCK_ROT) != OB_LOCK_ROT) { - has_translate_rotate[1] = true; + else { + has_translate_rotate[0] = true; } } - else { - has_translate_rotate[0] = true; - } } if (tc->data_len == 0) { |