diff options
Diffstat (limited to 'source/blender/python')
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 92bd686114d..f90dbef9836 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -164,6 +164,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop) case PROP_VELOCITY: case PROP_ACCELERATION: case PROP_XYZ: + case PROP_XYZ|PROP_UNIT_LENGTH: if(len>=2 && len <= 4) { PyObject *vec_cb= newVectorObject_cb(ret, len, mathutils_rna_array_cb_index, FALSE); Py_DECREF(ret); /* the vector owns now */ @@ -2670,6 +2671,9 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw) RNA_parameter_list_begin(&parms, &iter); for(; iter.valid; RNA_parameter_list_next(&iter)) { parm= iter.parm; + if(RNA_property_flag(parm) & PROP_RETURN) + continue; + BLI_dynstr_appendf(good_args, first ? "%s" : ", %s", RNA_property_identifier(parm)); first= FALSE; } @@ -3715,11 +3719,15 @@ static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key if(PyTuple_CheckExact(item) && PyTuple_GET_SIZE(item)==2) { PyObject *py_func_ptr, *py_kw, *py_srna_cobject, *py_ret; + PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *); if(PyArg_ParseTuple(item, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) { - PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *); - + if(*_PyUnicode_AsString(key)=='_') { + PyErr_Format(PyExc_ValueError, "StructRNA \"%.200s\" registration error: %.200s could not register because the property starts with an '_'\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key)); + Py_DECREF(dummy_args); + return -1; + } pyfunc = PyCObject_AsVoidPtr(py_func_ptr); py_srna_cobject = PyCObject_FromVoidPtr(srna, NULL); |