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:
authorAlexander Gavrilov <angavrilov@gmail.com>2016-08-22 11:11:45 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2016-08-22 11:11:45 +0300
commiteb2ee7212e16547e2a79b967d2ed37d88b0f2565 (patch)
tree06c1aed2bd016a61deaa47b2908f6be6825504d2 /intern/cycles/render
parent28cf9cfd15acad4c8eb2fd8a4d3df3a3905aa71e (diff)
Fix T49136: full constant Curves with zero Fac input crashes in assert.
The if branches were reordered when the original patch was committed, which broke the implicit non-NULL guarantee on link. To prevent re-occurrence, add a couple of unit tests.
Diffstat (limited to 'intern/cycles/render')
-rw-r--r--intern/cycles/render/nodes.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 4f54b86fe4a..0304d6d95d1 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -4846,12 +4846,8 @@ void CurvesNode::constant_fold(const ConstantFolder& folder, ShaderInput *value_
{
ShaderInput *fac_in = input("Fac");
- /* remove no-op node */
- if(!fac_in->link && fac == 0.0f) {
- folder.bypass(value_in->link);
- }
/* evaluate fully constant node */
- else if(folder.all_inputs_constant()) {
+ if(folder.all_inputs_constant()) {
if (curves.size() == 0)
return;
@@ -4864,6 +4860,11 @@ void CurvesNode::constant_fold(const ConstantFolder& folder, ShaderInput *value_
folder.make_constant(interp(value, result, fac));
}
+ /* remove no-op node */
+ else if(!fac_in->link && fac == 0.0f) {
+ /* link is not null because otherwise all inputs are constant */
+ folder.bypass(value_in->link);
+ }
}
void CurvesNode::compile(SVMCompiler& compiler, int type, ShaderInput *value_in, ShaderOutput *value_out)