diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-07-01 13:43:37 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-07-01 13:44:50 +0400 |
commit | 8c9c93ca6f4201f51c6db6caa6564f748d1b8bf7 (patch) | |
tree | 723c902ee2b794b2e31ff71330d3f090aa17f451 /intern | |
parent | fe9110edc4d0f49b7dd8941409e8d63743942ea6 (diff) |
Fix T40888: Memory error when selecting Cycles render engine
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/addon/engine.py | 2 | ||||
-rw-r--r-- | intern/cycles/blender/blender_python.cpp | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py index 25a9e97a99b..21a92a29cfc 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 6148f49a4b4..1d18f564e32 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), ®ionptr); + RNA_id_pointer_create((ID*)pylong_as_voidptr_typesafe(pyregion), ®ionptr); 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 */ |