[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37106] trunk/blender/source/blender: Fix related to #27309: group nodes with a linked datablock that was missing would crash.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Jun 2 19:34:01 CEST 2011


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);
 		}
 	}




More information about the Bf-blender-cvs mailing list