[Bf-blender-cvs] [dc2daf7] master: Fix T40482: Cycles matlib file crashes

Sergey Sharybin noreply at git.blender.org
Wed Jun 4 22:33:34 CEST 2014


Commit: dc2daf7a6786110a77cebc5ad8ea7a118d156d61
Author: Sergey Sharybin
Date:   Thu Jun 5 02:29:48 2014 +0600
https://developer.blender.org/rBdc2daf7a6786110a77cebc5ad8ea7a118d156d61

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!

===================================================================

M	intern/cycles/kernel/osl/osl_services.cpp

===================================================================

diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index dba2b66..8fe48b9 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;




More information about the Bf-blender-cvs mailing list