diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-03-23 17:48:32 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-03-23 17:48:32 +0300 |
commit | 5fad6edcb010f75c3918d0a21bf95f94a687522b (patch) | |
tree | ceec143a6be0c5b68f7278f6a68547cb53884972 /source/blender/python | |
parent | 69be3d45e850f7d128fc15a1727323aa5dfdb3d7 (diff) |
getting an item from a collection wasnt being checked correctly.
(commit 27665 by Campbell from render25 branch)
Diffstat (limited to 'source/blender/python')
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 55b4d52ddf4..6382a555880 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1099,12 +1099,17 @@ static Py_ssize_t pyrna_prop_collection_length( BPy_PropertyRNA *self ) static PyObject *pyrna_prop_collection_subscript_int(BPy_PropertyRNA *self, Py_ssize_t keynum) { PointerRNA newptr; + int len= RNA_property_collection_length(&self->ptr, self->prop); - if(keynum < 0) keynum += RNA_property_collection_length(&self->ptr, self->prop); - - if(RNA_property_collection_lookup_int(&self->ptr, self->prop, keynum, &newptr)) - return pyrna_struct_CreatePyObject(&newptr); + if(keynum < 0) keynum += len; + if(keynum >= 0 && keynum < len) { + if(RNA_property_collection_lookup_int(&self->ptr, self->prop, keynum, &newptr)) { + return pyrna_struct_CreatePyObject(&newptr); + } + PyErr_Format(PyExc_IndexError, "bpy_prop_collection[index]: index %d could not be found", keynum); + return NULL; + } PyErr_Format(PyExc_IndexError, "bpy_prop_collection[index]: index %d out of range", keynum); return NULL; } |