diff options
author | Jacques Lucke <jacques@blender.org> | 2022-02-01 19:48:44 +0300 |
---|---|---|
committer | Fabian Schempp <fabianschempp@googlemail.com> | 2022-04-11 01:28:49 +0300 |
commit | 7c85874532f0bfad4b430ad2a8e23b6257f85d8c (patch) | |
tree | 42c8b12a3271efb7afb7d17fbbff815e1c6708e4 /source/blender/editors/space_node/node_group.cc | |
parent | d6f06b84645729b83796e1de981c183bbec46594 (diff) |
Fix T95395: dangling parent pointer when creating node group
Differential Revision: https://developer.blender.org/D13981
Diffstat (limited to 'source/blender/editors/space_node/node_group.cc')
-rw-r--r-- | source/blender/editors/space_node/node_group.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/editors/space_node/node_group.cc b/source/blender/editors/space_node/node_group.cc index 73e419d667a..3d3f8378916 100644 --- a/source/blender/editors/space_node/node_group.cc +++ b/source/blender/editors/space_node/node_group.cc @@ -776,6 +776,18 @@ static void node_group_make_insert_selected(const bContext &C, bNodeTree &ntree, ListBase anim_basepaths = {nullptr, nullptr}; + /* Detach unselected nodes inside frames when the frame is put into the group. Otherwise the + * `parent` pointer becomes dangling. */ + LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + if (node->parent == nullptr) { + continue; + } + if (node_group_make_use_node(*node->parent, gnode) && + !node_group_make_use_node(*node, gnode)) { + nodeDetachNode(node); + } + } + /* move nodes over */ LISTBASE_FOREACH_MUTABLE (bNode *, node, &ntree.nodes) { if (node_group_make_use_node(*node, gnode)) { |