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

Brecht Van Lommel brecht at blender.org
Tue Mar 23 15:48:34 CET 2010


Revision: 27679
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27679
Author:   blendix
Date:     2010-03-23 15:48:32 +0100 (Tue, 23 Mar 2010)

Log Message:
-----------
getting an item from a collection wasnt being checked correctly.
(commit 27665 by Campbell from render25 branch)

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

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2010-03-23 14:47:40 UTC (rev 27678)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2010-03-23 14:48:32 UTC (rev 27679)
@@ -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