[Bf-blender-cvs] [8c9c93c] master: Fix T40888: Memory error when selecting Cycles render engine

Sergey Sharybin noreply at git.blender.org
Tue Jul 1 11:46:27 CEST 2014


Commit: 8c9c93ca6f4201f51c6db6caa6564f748d1b8bf7
Author: Sergey Sharybin
Date:   Tue Jul 1 15:43:37 2014 +0600
https://developer.blender.org/rB8c9c93ca6f4201f51c6db6caa6564f748d1b8bf7

Fix T40888: Memory error when selecting Cycles render engine

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

M	intern/cycles/blender/addon/engine.py
M	intern/cycles/blender/blender_python.cpp

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

diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index 25a9e97a..21a92a2 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -28,7 +28,7 @@ def init():
     _cycles.init(path, user_path)
 
 
-def create(engine, data, scene, region=0, v3d=0, rv3d=0, preview_osl=False):
+def create(engine, data, scene, region=None, v3d=None, rv3d=None, preview_osl=False):
     import bpy
     import _cycles
 
diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp
index 6148f49..1d18f56 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -35,6 +35,13 @@
 
 CCL_NAMESPACE_BEGIN
 
+static void *pylong_as_voidptr_typesafe(PyObject *object)
+{
+	if(object == Py_None)
+		return NULL;
+	return PyLong_AsVoidPtr(object);
+}
+
 void python_thread_state_save(void **python_thread_state)
 {
 	*python_thread_state = (void*)PyEval_SaveThread();
@@ -84,15 +91,15 @@ static PyObject *create_func(PyObject *self, PyObject *args)
 	BL::Scene scene(sceneptr);
 
 	PointerRNA regionptr;
-	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyregion), &regionptr);
+	RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyregion), &regionptr);
 	BL::Region region(regionptr);
 
 	PointerRNA v3dptr;
-	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyv3d), &v3dptr);
+	RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyv3d), &v3dptr);
 	BL::SpaceView3D v3d(v3dptr);
 
 	PointerRNA rv3dptr;
-	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyrv3d), &rv3dptr);
+	RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyrv3d), &rv3dptr);
 	BL::RegionView3D rv3d(rv3dptr);
 
 	/* create session */




More information about the Bf-blender-cvs mailing list