diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-04-18 17:16:38 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-04-18 17:16:38 +0400 |
commit | 1d004e571aeca4c1ad7c4d554b57542aaaeb6099 (patch) | |
tree | b86e60f0c9635e5318b8b0ca147ac0e0fbfae1df /source/blender/editors/space_node/node_templates.c | |
parent | 0b0abfe6fb4ee09b99cf4f4853eb6faef7fd39a4 (diff) |
A few fixes for recent own commit r56133.
* Index was assigned after increment, leading to NULL pointer access later on when looking up socket from list
* Copying default_value requires a valid NULL pointer for clean check
* Was using default_values as parameters instead of sockets, void pointers just passed through without warning ...
Diffstat (limited to 'source/blender/editors/space_node/node_templates.c')
-rw-r--r-- | source/blender/editors/space_node/node_templates.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/editors/space_node/node_templates.c b/source/blender/editors/space_node/node_templates.c index 973cb5acc80..2b7101c8c4e 100644 --- a/source/blender/editors/space_node/node_templates.c +++ b/source/blender/editors/space_node/node_templates.c @@ -246,9 +246,11 @@ static void node_socket_add_replace(const bContext *C, bNodeTree *ntree, bNode * nodeRemLink(ntree, link); } - if (sock_from->default_value) + if (sock_from->default_value) { MEM_freeN(sock_from->default_value); - node_socket_copy_default_value(sock_from->default_value, sock_prev->default_value); + sock_from->default_value = NULL; + } + node_socket_copy_default_value(sock_from, sock_prev); } } } @@ -313,8 +315,8 @@ static void ui_node_link_items(NodeLinkArg *arg, int in_out, NodeLinkItem **r_it ListBase *lb = (in_out == SOCK_IN ? &ngroup->inputs : &ngroup->outputs); bNodeSocket *stemp; int index; - for (stemp = lb->first, index = 0; stemp; stemp = stemp->next, ++index) { - NodeLinkItem *item = &items[i++]; + for (stemp = lb->first, index = 0; stemp; stemp = stemp->next, ++index, ++i) { + NodeLinkItem *item = &items[i]; item->socket_index = index; /* note: int stemp->type is not fully reliable, not used for node group @@ -340,8 +342,8 @@ static void ui_node_link_items(NodeLinkArg *arg, int in_out, NodeLinkItem **r_it items = MEM_callocN(sizeof(NodeLinkItem) * totitems, "ui node link items"); i = 0; - for (stemp = socket_templates; stemp && stemp->type != -1; ++stemp) { - NodeLinkItem *item = &items[i++]; + for (stemp = socket_templates; stemp && stemp->type != -1; ++stemp, ++i) { + NodeLinkItem *item = &items[i]; item->socket_index = i; item->socket_type = stemp->type; |