[Bf-blender-cvs] [a827864e6b1] blender-v3.0-release: Fix T89709: avoid double node links after delete and reconnect

Colin noreply at git.blender.org
Wed Nov 3 17:55:19 CET 2021


Commit: a827864e6b1ee34af759dea61f832076c0e67c44
Author: Colin
Date:   Wed Nov 3 17:53:41 2021 +0100
Branches: blender-v3.0-release
https://developer.blender.org/rBa827864e6b1ee34af759dea61f832076c0e67c44

Fix T89709: avoid double node links after delete and reconnect

Differential Revision: https://developer.blender.org/D13062

===================================================================

M	source/blender/blenkernel/intern/node.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index ae9cddacc85..6b409ae656e 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -2601,6 +2601,17 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node)
         bNodeLink *fromlink = link->fromsock->link->fromsock->link;
         /* skip the node */
         if (fromlink) {
+          if (link->tosock->flag & SOCK_MULTI_INPUT) {
+            /* remove the link that would be the same as the relinked one */
+            LISTBASE_FOREACH_MUTABLE (bNodeLink *, link_to_compare, &ntree->links) {
+              if (link_to_compare->fromsock == fromlink->fromsock &&
+                  link_to_compare->tosock == link->tosock) {
+                adjust_multi_input_indices_after_removed_link(
+                    ntree, link_to_compare->tosock, link_to_compare->multi_input_socket_index);
+                nodeRemLink(ntree, link_to_compare);
+              }
+            }
+          }
           link->fromnode = fromlink->fromnode;
           link->fromsock = fromlink->fromsock;



More information about the Bf-blender-cvs mailing list