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:
authorCampbell Barton <campbell@blender.org>2022-02-02 10:02:13 +0300
committerCampbell Barton <campbell@blender.org>2022-02-02 10:02:13 +0300
commitcabc9506f9ace9f89f4a6d92dff676284e3a989f (patch)
tree9dc8f0f02d86d1eecb1277cacce221ab25a4430c
parent709f67cbf0be66cbf6f23a38c89e5cf62071d8a0 (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.
-rw-r--r--source/blender/editors/transform/transform_convert_armature.c34
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) {