== PyNodes ==
authorWillian Padovani Germano <wpgermano@gmail.com>
Fri, 2 May 2008 20:41:33 +0000 (20:41 +0000)
committerWillian Padovani Germano <wpgermano@gmail.com>
Fri, 2 May 2008 20:41:33 +0000 (20:41 +0000)
More bug fixing, reports by Juho (bebraw) Vepsalainen (thanks!)

#10340: a recent fix I made broke handling of pynodes with buggy scripts when loaded from a .blend. (This may have been the reason for #10341, too, caused by saving buggy typeinfo.)

http://projects.blender.org/tracker/?func=detail&atid=125&aid=10340&group_id=9

source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c

index 37bbb68ba030fa7b0b00ea6fc4e87ec0b321a45a..78f780c43b11c624d0bcb4f79a3b8992982f7e49 100644 (file)
@@ -160,11 +160,11 @@ static void node_dynamic_free_storage_cb(bNode *node)
 }
 
 /* Disable pynode when its script fails */
-/*static void node_dynamic_disable(bNode *node)
+static void node_dynamic_disable(bNode *node)
 {
        node->custom1 = 0;
        node->custom1 = BSET(node->custom1, NODE_DYNAMIC_ERROR);
-}*/
+}
 
 /* Disable all pynodes using the given text (script) id */
 static void node_dynamic_disable_all_by_id(ID *id)
@@ -401,7 +401,11 @@ static int node_dynamic_parse(struct bNode *node)
        MEM_freeN(buf);
 
        if (!pyresult) {
+               if (BTST(node->custom1, NODE_DYNAMIC_LOADED)) {
+                       node_dynamic_disable(node);
+               } else {
                node_dynamic_disable_all_by_id(node->id);
+               }
                node_dynamic_pyerror_print(node);
                PyGILState_Release(gilstate);
                return -1;