From c34275bcabc205a3cdc8abba8062ee84fd460850 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 7 Nov 2010 04:46:50 +0000 Subject: better exception check for calling operators. non dict/None values were being treated as None. --- source/blender/python/intern/bpy_operator.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'source/blender/python/intern/bpy_operator.c') diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index f3e960f87b2..e78e79fd6a8 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -73,8 +73,13 @@ static PyObject *pyop_poll(PyObject *UNUSED(self), PyObject *args) } } - if(!PyDict_Check(context_dict)) + if(context_dict==NULL || context_dict==Py_None) { context_dict= NULL; + } + else if (!PyDict_Check(context_dict)) { + PyErr_Format(PyExc_TypeError, "Calling operator \"bpy.ops.%s.poll\" error, custom context expected a dict or None, got a %.200s", opname, Py_TYPE(context_dict)->tp_name); + return NULL; + } context_dict_back= CTX_py_dict_get(C); @@ -130,8 +135,13 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args) } } - if(!PyDict_Check(context_dict)) + if(context_dict==NULL || context_dict==Py_None) { context_dict= NULL; + } + else if (!PyDict_Check(context_dict)) { + PyErr_Format(PyExc_TypeError, "Calling operator \"bpy.ops.%s\" error, custom context expected a dict or None, got a %.200s", opname, Py_TYPE(context_dict)->tp_name); + return NULL; + } context_dict_back= CTX_py_dict_get(C); -- cgit v1.2.3