From 6b9825e6f792018049b38d17e9f1123ef814d87f Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Mon, 26 Dec 2022 10:17:51 -0500 Subject: [PATCH] Fix T103463: Repeat last crashes in node editor ae886596a0f1a220372 tried to retrieve keymap data from a null pointer. --- source/blender/editors/transform/transform.c | 37 ++++++++++---------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index cdbd85e85a1..ff93bcaf8ca 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1871,25 +1871,26 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve } } } - } - if (t->data_type == &TransConvertType_Node) { - /* Set the initial auto-attach flag based on whether the chosen keymap key is pressed at the - * start of the operator. */ - t->modifiers |= MOD_NODE_ATTACH; - LISTBASE_FOREACH (const wmKeyMapItem *, kmi, &t->keymap->items) { - if (kmi->flag & KMI_INACTIVE) { - continue; - } - - if (kmi->propvalue == TFM_MODAL_NODE_ATTACH_OFF && kmi->val == KM_PRESS) { - if ((ELEM(kmi->type, EVT_LEFTCTRLKEY, EVT_RIGHTCTRLKEY) && (event->modifier & KM_CTRL)) || - (ELEM(kmi->type, EVT_LEFTSHIFTKEY, EVT_RIGHTSHIFTKEY) && - (event->modifier & KM_SHIFT)) || - (ELEM(kmi->type, EVT_LEFTALTKEY, EVT_RIGHTALTKEY) && (event->modifier & KM_ALT)) || - ((kmi->type == EVT_OSKEY) && (event->modifier & KM_OSKEY))) { - t->modifiers &= ~MOD_NODE_ATTACH; + if (t->data_type == &TransConvertType_Node) { + /* Set the initial auto-attach flag based on whether the chosen keymap key is pressed at the + * start of the operator. */ + t->modifiers |= MOD_NODE_ATTACH; + LISTBASE_FOREACH (const wmKeyMapItem *, kmi, &t->keymap->items) { + if (kmi->flag & KMI_INACTIVE) { + continue; + } + + if (kmi->propvalue == TFM_MODAL_NODE_ATTACH_OFF && kmi->val == KM_PRESS) { + if ((ELEM(kmi->type, EVT_LEFTCTRLKEY, EVT_RIGHTCTRLKEY) && + (event->modifier & KM_CTRL)) || + (ELEM(kmi->type, EVT_LEFTSHIFTKEY, EVT_RIGHTSHIFTKEY) && + (event->modifier & KM_SHIFT)) || + (ELEM(kmi->type, EVT_LEFTALTKEY, EVT_RIGHTALTKEY) && (event->modifier & KM_ALT)) || + ((kmi->type == EVT_OSKEY) && (event->modifier & KM_OSKEY))) { + t->modifiers &= ~MOD_NODE_ATTACH; + } + break; } - break; } } }