Cycles: fix crash when drawing properties UI while editing node links.
This commit is contained in:
@@ -74,7 +74,7 @@ static void ui_node_tag_recursive(bNode *node)
|
|||||||
{
|
{
|
||||||
bNodeSocket *input;
|
bNodeSocket *input;
|
||||||
|
|
||||||
if(node->flag & NODE_TEST)
|
if(!node || (node->flag & NODE_TEST))
|
||||||
return; /* in case of cycles */
|
return; /* in case of cycles */
|
||||||
|
|
||||||
node->flag |= NODE_TEST;
|
node->flag |= NODE_TEST;
|
||||||
@@ -88,7 +88,7 @@ static void ui_node_clear_recursive(bNode *node)
|
|||||||
{
|
{
|
||||||
bNodeSocket *input;
|
bNodeSocket *input;
|
||||||
|
|
||||||
if(!(node->flag & NODE_TEST))
|
if(!node || !(node->flag & NODE_TEST))
|
||||||
return; /* in case of cycles */
|
return; /* in case of cycles */
|
||||||
|
|
||||||
node->flag &= ~NODE_TEST;
|
node->flag &= ~NODE_TEST;
|
||||||
@@ -115,6 +115,9 @@ static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node)
|
|||||||
bNode *node, *next;
|
bNode *node, *next;
|
||||||
bNodeSocket *sock;
|
bNodeSocket *sock;
|
||||||
|
|
||||||
|
if(!node)
|
||||||
|
return;
|
||||||
|
|
||||||
/* tag linked nodes to be removed */
|
/* tag linked nodes to be removed */
|
||||||
for(node=ntree->nodes.first; node; node=node->next)
|
for(node=ntree->nodes.first; node; node=node->next)
|
||||||
node->flag &= ~NODE_TEST;
|
node->flag &= ~NODE_TEST;
|
||||||
@@ -144,7 +147,7 @@ static void ui_node_remove_linked(bNodeTree *ntree, bNode *rem_node)
|
|||||||
|
|
||||||
static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR])
|
static void ui_node_sock_name(bNodeSocket *sock, char name[UI_MAX_NAME_STR])
|
||||||
{
|
{
|
||||||
if(sock->link) {
|
if(sock->link && sock->link->fromnode) {
|
||||||
bNode *node = sock->link->fromnode;
|
bNode *node = sock->link->fromnode;
|
||||||
|
|
||||||
if(node->type == NODE_GROUP)
|
if(node->type == NODE_GROUP)
|
||||||
@@ -229,7 +232,7 @@ static void ui_node_link(bContext *C, void *arg_p, void *event_p)
|
|||||||
if(strcmp(sock_prev->name, sock_from->name) == 0 && sock_prev->type == sock_from->type) {
|
if(strcmp(sock_prev->name, sock_from->name) == 0 && sock_prev->type == sock_from->type) {
|
||||||
bNodeLink *link = sock_prev->link;
|
bNodeLink *link = sock_prev->link;
|
||||||
|
|
||||||
if(link) {
|
if(link && link->fromnode) {
|
||||||
nodeAddLink(ntree, link->fromnode, link->fromsock, node_from, sock_from);
|
nodeAddLink(ntree, link->fromnode, link->fromsock, node_from, sock_from);
|
||||||
nodeRemLink(ntree, link);
|
nodeRemLink(ntree, link);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user