Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-05 00:12:16 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-05 00:12:16 +0400
commit282f98a84dc7d454a36918b9b8b279aa127c4d3b (patch)
tree2f91ff3f8a27f13a60f334bc9fa3f7e1bbf3eec4 /intern/cycles/render/svm.cpp
parent79b4c0e600c2f2fe539a0602bf752b62210815d6 (diff)
Fix #31806: cycles crash rendering a particular node setup with multiple mix/add
shader nodes.
Diffstat (limited to 'intern/cycles/render/svm.cpp')
-rw-r--r--intern/cycles/render/svm.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp
index 844ce01569f..da287a10199 100644
--- a/intern/cycles/render/svm.cpp
+++ b/intern/cycles/render/svm.cpp
@@ -274,6 +274,17 @@ void SVMCompiler::stack_clear_users(ShaderNode *node, set<ShaderNode*>& done)
foreach(ShaderInput *in, output->links)
in->stack_offset = SVM_STACK_INVALID;
+
+ /* unmark any nodes that have no more valid outputs, see [#31806] */
+ if(done.find(output->parent) != done.end()) {
+ all_done = true;
+ foreach(ShaderOutput *pout, output->parent->outputs)
+ if(pout->stack_offset != SVM_STACK_INVALID)
+ all_done = false;
+
+ if(all_done)
+ done.erase(output->parent);
+ }
}
}
}