Revision: 24639
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24639
Author:   campbellbarton
Date:     2009-11-18 14:02:09 +0100 (Wed, 18 Nov 2009)

Log Message:
-----------
fix for memory leak, use Key Errors for pyrna getitem access & idprops

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/python/generic/IDProp.c
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c   2009-11-18 
11:50:31 UTC (rev 24638)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c   2009-11-18 
13:02:09 UTC (rev 24639)
@@ -2344,13 +2344,8 @@
 
                if(use_id_prop) { /* look up property name in current struct */
                        IDProperty *group= RNA_struct_idproperties(ptr, 0);
-                       if(!group)
-                               return 0;
-
-                       if(rna_token_strip_quotes(token))
+                       if(group && rna_token_strip_quotes(token))
                                prop= (PropertyRNA 
*)IDP_GetPropertyFromGroup(group, token+1);
-                       else
-                               prop= NULL;
                }
                else {
                        prop= RNA_struct_find_property(&curptr, token);

Modified: trunk/blender/source/blender/python/generic/IDProp.c
===================================================================
--- trunk/blender/source/blender/python/generic/IDProp.c        2009-11-18 
11:50:31 UTC (rev 24638)
+++ trunk/blender/source/blender/python/generic/IDProp.c        2009-11-18 
13:02:09 UTC (rev 24639)
@@ -322,7 +322,7 @@
                        MEM_freeN(pkey);
                        return 0;
                } else {
-                       PyErr_SetString( PyExc_RuntimeError, "property not 
found in group" );
+                       PyErr_SetString( PyExc_KeyError, "property not found in 
group" );
                        return -1;
                }
        }
@@ -336,7 +336,7 @@
 
                err = 
BPy_IDProperty_Map_ValidateAndCreate(_PyUnicode_AsString(key), prop, val);
                if (err) {
-                       PyErr_SetString( PyExc_RuntimeError, err );
+                       PyErr_SetString( PyExc_KeyError, err );
                        return -1;
                }
 

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c        2009-11-18 
11:50:31 UTC (rev 24638)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c        2009-11-18 
13:02:09 UTC (rev 24639)
@@ -1218,14 +1218,14 @@
        group= RNA_struct_idproperties(&self->ptr, 0);
 
        if(group==NULL) {
-               PyErr_Format( PyExc_TypeError, "key \"%s\" not found", name);
+               PyErr_Format( PyExc_KeyError, "key \"%s\" not found", name);
                return NULL;
        }
 
        idprop= IDP_GetPropertyFromGroup(group, name);
 
        if(idprop==NULL) {
-               PyErr_Format( PyExc_TypeError, "key \"%s\" not found", name);
+               PyErr_Format( PyExc_KeyError, "key \"%s\" not found", name);
                return NULL;
        }
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to