Revision: 37106
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37106
Author:   blendix
Date:     2011-06-02 17:34:01 +0000 (Thu, 02 Jun 2011)
Log Message:
-----------
Fix related to #27309: group nodes with a linked datablock that was missing 
would crash.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenloader/intern/readfile.c

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c       2011-06-02 
17:28:04 UTC (rev 37105)
+++ trunk/blender/source/blender/blenkernel/intern/node.c       2011-06-02 
17:34:01 UTC (rev 37106)
@@ -350,7 +350,7 @@
 /* groups display their internal tree name as label */
 static const char *group_label(bNode *node)
 {
-       return node->id->name+2;
+       return (node->id)? node->id->name+2: "Missing Datablock";
 }
 
 void register_node_type_group(ListBase *lb)
@@ -2072,11 +2072,12 @@
        bNodeTree *ngroup= (bNodeTree*)node->id;
        bNodeSocket *sock;
        
-       if((ngroup->init & NTREE_TYPE_INIT)==0)
+       if(ngroup && (ngroup->init & NTREE_TYPE_INIT)==0)
                ntreeInitTypes(ngroup);
        
        node->stack_index = index;
-       index += ntree_begin_exec_tree(ngroup);
+       if(ngroup)
+               index += ntree_begin_exec_tree(ngroup);
        
        for (sock=node->inputs.first; sock; sock=sock->next) {
                if (sock->link && sock->link->fromsock) {
@@ -2199,7 +2200,7 @@
                        if(node->type==CMP_NODE_CURVE_RGB)
                                curvemapping_premultiply(node->storage, 0);
                }
-               if(node->type==NODE_GROUP)
+               if(node->type==NODE_GROUP && node->id)
                        composit_begin_exec((bNodeTree *)node->id, stack + 
node->stack_index);
 
        }
@@ -2225,7 +2226,7 @@
                if(node->type==CMP_NODE_CURVE_RGB)
                        curvemapping_premultiply(node->storage, 1);
                
-               if(node->type==NODE_GROUP)
+               if(node->type==NODE_GROUP && node->id)
                        composit_end_exec((bNodeTree *)node->id, stack + 
node->stack_index);
 
                node->need_exec= 0;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c   2011-06-02 
17:28:04 UTC (rev 37105)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c   2011-06-02 
17:34:01 UTC (rev 37106)
@@ -2093,7 +2093,7 @@
        for (node=ntree->nodes.first; node; node=node->next) {
                if (node->type==NODE_GROUP) {
                        bNodeTree *ngroup= (bNodeTree*)node->id;
-                       if (ngroup->flag & NTREE_DO_VERSIONS)
+                       if (ngroup && (ngroup->flag & NTREE_DO_VERSIONS))
                                lib_node_do_versions_group(node);
                }
        }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to