diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-06-05 00:29:48 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-06-05 00:33:21 +0400 |
commit | dc2daf7a6786110a77cebc5ad8ea7a118d156d61 (patch) | |
tree | 982bcb02159708ded6586f34445abb20d84e3b8b /intern/cycles/kernel/osl/osl_services.cpp | |
parent | 9b3efa912a24de57aa58f5dd62291c5654504d8c (diff) |
Fix T40482: Cycles matlib file crashes
it's possible that runtime optimizer would call get_attribute
with NULL renderstate. As per documentation, it's valid to
return false in that cases and in worst case we'll just miss
some possible optimization.
Supporting such cases would require some bigger changes to
Cycles since attributes are only set to up for the kernel
after shader compilation.
Thanks Brecht for review!
Diffstat (limited to 'intern/cycles/kernel/osl/osl_services.cpp')
-rw-r--r-- | intern/cycles/kernel/osl/osl_services.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp index dba2b66faff..8fe48b9b38c 100644 --- a/intern/cycles/kernel/osl/osl_services.cpp +++ b/intern/cycles/kernel/osl/osl_services.cpp @@ -754,6 +754,9 @@ bool OSLRenderServices::get_background_attribute(KernelGlobals *kg, ShaderData * bool OSLRenderServices::get_attribute(void *renderstate, bool derivatives, ustring object_name, TypeDesc type, ustring name, void *val) { + if (renderstate == NULL) + return false; + ShaderData *sd = (ShaderData *)renderstate; KernelGlobals *kg = sd->osl_globals; bool is_curve; |