diff options
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 8 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna_array.c | 13 |
2 files changed, 7 insertions, 14 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 9390cd80b7b..f18b1aee5ab 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1042,20 +1042,12 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb if (RNA_property_array_check(ptr, prop)) { - - /* char error_str[512]; */ int ok= 1; -// if (!PySequence_Check(value)) { -// PyErr_Format(PyExc_TypeError, "%.200s RNA array assignment to %.200s.%.200s expected a sequence, not %.200s", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop), Py_TYPE(value)->tp_name); -// return -1; -// } - /* done getting the length */ ok= pyrna_py_to_array(ptr, prop, data, value, error_prefix); if (!ok) { - /* PyErr_Format(PyExc_AttributeError, "%.200s %s", error_prefix, error_str); */ return -1; } } diff --git a/source/blender/python/intern/bpy_rna_array.c b/source/blender/python/intern/bpy_rna_array.c index 72b06c04943..74ce5f66cfd 100644 --- a/source/blender/python/intern/bpy_rna_array.c +++ b/source/blender/python/intern/bpy_rna_array.c @@ -110,21 +110,22 @@ static int validate_array_type(PyObject *seq, int dim, int totdim, int dimsize[] } /* Returns the number of items in a single- or multi-dimensional sequence. */ -static int count_items(PyObject *seq) +static int count_items(PyObject *seq, int dim) { int totitem= 0; - if (PySequence_Check(seq)) { + if(dim > 1) { const int seq_size= PySequence_Size(seq); int i; for (i= 0; i < seq_size; i++) { PyObject *item= PySequence_GetItem(seq, i); - totitem += count_items(item); + totitem += count_items(item, dim - 1); Py_DECREF(item); } } - else - totitem= 1; + else { + totitem= PySequence_Size(seq); + } return totitem; } @@ -135,8 +136,8 @@ static int validate_array_length(PyObject *rvalue, PointerRNA *ptr, PropertyRNA int dimsize[MAX_ARRAY_DIMENSION]; int tot, totdim, len; - tot= count_items(rvalue); totdim= RNA_property_array_dimension(ptr, prop, dimsize); + tot= count_items(rvalue, totdim); if ((RNA_property_flag(prop) & PROP_DYNAMIC) && lvalue_dim == 0) { if (RNA_property_array_length(ptr, prop) != tot) { |