Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2010-03-23 17:48:32 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2010-03-23 17:48:32 +0300
commit5fad6edcb010f75c3918d0a21bf95f94a687522b (patch)
treeceec143a6be0c5b68f7278f6a68547cb53884972 /source/blender/python
parent69be3d45e850f7d128fc15a1727323aa5dfdb3d7 (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.c13
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;
}