[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56663] trunk/blender/intern/cycles/render : Fix for recent bugfix with anisotropic node crash, could do invalid memory access.
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri May 10 17:10:54 CEST 2013
Revision: 56663
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56663
Author: blendix
Date: 2013-05-10 15:10:54 +0000 (Fri, 10 May 2013)
Log Message:
-----------
Fix for recent bugfix with anisotropic node crash, could do invalid memory access.
Modified Paths:
--------------
trunk/blender/intern/cycles/render/graph.cpp
trunk/blender/intern/cycles/render/graph.h
Modified: trunk/blender/intern/cycles/render/graph.cpp
===================================================================
--- trunk/blender/intern/cycles/render/graph.cpp 2013-05-10 14:52:23 UTC (rev 56662)
+++ trunk/blender/intern/cycles/render/graph.cpp 2013-05-10 15:10:54 UTC (rev 56663)
@@ -135,6 +135,7 @@
ShaderGraph::ShaderGraph()
{
finalized = false;
+ num_node_ids = 0;
add(new OutputNode());
}
@@ -147,7 +148,7 @@
ShaderNode *ShaderGraph::add(ShaderNode *node)
{
assert(!finalized);
- node->id = nodes.size();
+ node->id = num_node_ids++;
nodes.push_back(node);
return node;
}
@@ -314,7 +315,7 @@
void ShaderGraph::remove_unneeded_nodes()
{
- vector<bool> removed(nodes.size(), false);
+ vector<bool> removed(num_node_ids, false);
bool any_node_removed = false;
/* find and unlink proxy nodes */
@@ -459,11 +460,9 @@
* nodes that don't feed into the output. how cycles are broken is
* undefined, they are invalid input, the important thing is to not crash */
- vector<bool> visited(nodes.size(), false);
- vector<bool> on_stack(nodes.size(), false);
+ vector<bool> visited(num_node_ids, false);
+ vector<bool> on_stack(num_node_ids, false);
- list<ShaderNode*> newnodes;
-
/* break cycles */
break_cycles(output(), visited, on_stack);
@@ -482,6 +481,8 @@
}
/* remove unused nodes */
+ list<ShaderNode*> newnodes;
+
foreach(ShaderNode *node, nodes) {
if(visited[node->id])
newnodes.push_back(node);
Modified: trunk/blender/intern/cycles/render/graph.h
===================================================================
--- trunk/blender/intern/cycles/render/graph.h 2013-05-10 14:52:23 UTC (rev 56662)
+++ trunk/blender/intern/cycles/render/graph.h 2013-05-10 15:10:54 UTC (rev 56663)
@@ -226,6 +226,7 @@
class ShaderGraph {
public:
list<ShaderNode*> nodes;
+ size_t num_node_ids;
bool finalized;
ShaderGraph();
More information about the Bf-blender-cvs
mailing list