[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41145] trunk/blender/source/blender/nodes /intern/node_socket.c: Fix for #28980, could enter infinite loop during node socket verification if dynamic sockets are present .
Lukas Toenne
lukas.toenne at googlemail.com
Thu Oct 20 12:36:02 CEST 2011
Revision: 41145
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41145
Author: lukastoenne
Date: 2011-10-20 10:36:02 +0000 (Thu, 20 Oct 2011)
Log Message:
-----------
Fix for #28980, could enter infinite loop during node socket verification if dynamic sockets are present.
Note: in this particular bug report the sockets have some faulty flag settings (none of them should be flagged as SOCK_DYNAMIC), needs more info.
Modified Paths:
--------------
trunk/blender/source/blender/nodes/intern/node_socket.c
Modified: trunk/blender/source/blender/nodes/intern/node_socket.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/node_socket.c 2011-10-20 10:35:54 UTC (rev 41144)
+++ trunk/blender/source/blender/nodes/intern/node_socket.c 2011-10-20 10:36:02 UTC (rev 41145)
@@ -405,15 +405,15 @@
static void verify_socket_template_list(bNodeTree *ntree, bNode *node, int in_out, ListBase *socklist, bNodeSocketTemplate *stemp_first)
{
- bNodeSocket *sock;
+ bNodeSocket *sock, *nextsock;
bNodeSocketTemplate *stemp;
/* no inputs anymore? */
if(stemp_first==NULL) {
- while(socklist->first) {
- sock = (bNodeSocket*)socklist->first;
+ for (sock = (bNodeSocket*)socklist->first; sock; sock=nextsock) {
+ nextsock = sock->next;
if (!(sock->flag & SOCK_DYNAMIC))
- nodeRemoveSocket(ntree, node, socklist->first);
+ nodeRemoveSocket(ntree, node, sock);
}
}
else {
@@ -424,10 +424,10 @@
stemp++;
}
/* leftovers are removed */
- while(socklist->first) {
- sock = (bNodeSocket*)socklist->first;
+ for (sock = (bNodeSocket*)socklist->first; sock; sock=nextsock) {
+ nextsock = sock->next;
if (!(sock->flag & SOCK_DYNAMIC))
- nodeRemoveSocket(ntree, node, socklist->first);
+ nodeRemoveSocket(ntree, node, sock);
}
/* and we put back the verified sockets */
More information about the Bf-blender-cvs
mailing list