[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27665] branches/render25/source/blender/ python/intern/bpy_rna.c: getting an item from a collection wasnt being checked correctly.

Campbell Barton ideasman42 at gmail.com
Mon Mar 22 18:24:17 CET 2010


Revision: 27665
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27665
Author:   campbellbarton
Date:     2010-03-22 18:24:17 +0100 (Mon, 22 Mar 2010)

Log Message:
-----------
getting an item from a collection wasnt being checked correctly.

Modified Paths:
--------------
    branches/render25/source/blender/python/intern/bpy_rna.c

Modified: branches/render25/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/render25/source/blender/python/intern/bpy_rna.c	2010-03-22 17:17:36 UTC (rev 27664)
+++ branches/render25/source/blender/python/intern/bpy_rna.c	2010-03-22 17:24:17 UTC (rev 27665)
@@ -1099,12 +1099,17 @@
 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(keynum < 0) keynum += len;
 
-	if(RNA_property_collection_lookup_int(&self->ptr, self->prop, keynum, &newptr))
-		return pyrna_struct_CreatePyObject(&newptr);
-
+    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;
 }





More information about the Bf-blender-cvs mailing list