[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