From ca01fe58e1476cd1c56f5585c057539149f0060e Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 17 Jun 2016 12:14:36 +0200 Subject: Fix T48662: Blender crash using node groups connected with displacement output in some situations --- source/blender/nodes/shader/node_shader_tree.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index afccef46174..b22f5b662ba 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -57,6 +57,8 @@ #include "RE_shader_ext.h" +#include "NOD_common.h" + #include "node_common.h" #include "node_exec.h" #include "node_util.h" @@ -323,6 +325,9 @@ static void ntree_shader_link_builtin_group_normal( "NodeSocketVector", "Normal"); /* Need to update tree so all node instances nodes gets proper sockets. */ + bNode *group_input_node = ntreeFindType(group_ntree, NODE_GROUP_INPUT); + node_group_verify(ntree, group_node, &group_ntree->id); + node_group_input_verify(group_ntree, group_input_node, &group_ntree->id); ntreeUpdateTree(G.main, group_ntree); /* Assumes sockets are always added at the end. */ bNodeSocket *group_node_normal_socket = (bNodeSocket*)group_node->inputs.last; @@ -346,7 +351,6 @@ static void ntree_shader_link_builtin_group_normal( /* This code is similar to ntree_shader_relink_displacement() */ bNode *group_displacement_node = group_displacement_link->fromnode; bNodeSocket *group_displacement_socket = group_displacement_link->fromsock; - nodeRemLink(group_ntree, group_displacement_link); /* Create and link bump node. * Can't re-use bump node from parent tree because it'll cause cycle. */ @@ -371,7 +375,6 @@ static void ntree_shader_link_builtin_group_normal( nodeAddLink(ntree, node_from, socket_from, group_node, group_node_normal_socket); - bNode *group_input_node = ntreeFindType(group_ntree, NODE_GROUP_INPUT); BLI_assert(group_input_node != NULL); bNodeSocket *group_input_node_normal_socket = nodeFindSocket(group_input_node, -- cgit v1.2.3