Revision: 27670
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27670
Author:   campbellbarton
Date:     2010-03-23 10:19:46 +0100 (Tue, 23 Mar 2010)

Log Message:
-----------
fix for parsing python args to rna functions, was using allocated size as 
argument count.

Modified Paths:
--------------
    branches/render25/source/blender/makesrna/RNA_access.h
    branches/render25/source/blender/makesrna/RNA_types.h
    branches/render25/source/blender/makesrna/intern/rna_access.c
    branches/render25/source/blender/python/intern/bpy_rna.c

Modified: branches/render25/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/render25/source/blender/makesrna/RNA_access.h      2010-03-23 
01:22:33 UTC (rev 27669)
+++ branches/render25/source/blender/makesrna/RNA_access.h      2010-03-23 
09:19:46 UTC (rev 27670)
@@ -891,6 +891,8 @@
 ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA 
*ptr, FunctionRNA *func);
 void RNA_parameter_list_free(ParameterList *parms);
 int  RNA_parameter_list_size(ParameterList *parms);
+int  RNA_parameter_list_arg_count(ParameterList *parms);
+int  RNA_parameter_list_ret_count(ParameterList *parms);
 
 void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter);
 void RNA_parameter_list_next(ParameterIterator *iter);

Modified: branches/render25/source/blender/makesrna/RNA_types.h
===================================================================
--- branches/render25/source/blender/makesrna/RNA_types.h       2010-03-23 
01:22:33 UTC (rev 27669)
+++ branches/render25/source/blender/makesrna/RNA_types.h       2010-03-23 
09:19:46 UTC (rev 27670)
@@ -245,9 +245,11 @@
        /* storage for parameters */
        void *data;
 
-       /* store the parameter count */
-       int tot;
+       /* store the parameter size */
+       int alloc_size;
 
+       int arg_count, ret_count;
+
        /* function passed at creation time */
        struct FunctionRNA *func;
 } ParameterList;

Modified: branches/render25/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/render25/source/blender/makesrna/intern/rna_access.c       
2010-03-23 01:22:33 UTC (rev 27669)
+++ branches/render25/source/blender/makesrna/intern/rna_access.c       
2010-03-23 09:19:46 UTC (rev 27670)
@@ -3758,15 +3758,24 @@
 {
        PropertyRNA *parm;
        void *data;
-       int tot= 0, size;
+       int alloc_size= 0, size;
 
+    parms->arg_count= 0;
+    parms->ret_count= 0;
+    
        /* allocate data */
-       for(parm= func->cont.properties.first; parm; parm= parm->next)
-               tot+= rna_parameter_size_alloc(parm);
+       for(parm= func->cont.properties.first; parm; parm= parm->next) {
+               alloc_size += rna_parameter_size_alloc(parm);
 
-       parms->data= MEM_callocN(tot, "RNA_parameter_list_create");
+        if(parm->flag & PROP_OUTPUT)
+            parms->ret_count++;
+        else
+            parms->arg_count++;
+    }
+
+       parms->data= MEM_callocN(alloc_size, "RNA_parameter_list_create");
        parms->func= func;
-       parms->tot= tot;
+       parms->alloc_size= alloc_size;
 
        /* set default values */
        data= parms->data;
@@ -3840,9 +3849,19 @@
 
 int  RNA_parameter_list_size(ParameterList *parms)
 {
-       return parms->tot;
+       return parms->alloc_size;
 }
 
+int  RNA_parameter_list_arg_count(ParameterList *parms)
+{
+       return parms->arg_count;
+}
+
+int  RNA_parameter_list_ret_count(ParameterList *parms)
+{
+       return parms->ret_count;
+}
+
 void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter)
 {
        PropertyType ptype;

Modified: branches/render25/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/render25/source/blender/python/intern/bpy_rna.c    2010-03-23 
01:22:33 UTC (rev 27669)
+++ branches/render25/source/blender/python/intern/bpy_rna.c    2010-03-23 
09:19:46 UTC (rev 27670)
@@ -2976,7 +2976,7 @@
 
        RNA_parameter_list_create(&parms, self_ptr, self_func);
        RNA_parameter_list_begin(&parms, &iter);
-       parms_len= RNA_parameter_list_size(&parms);
+       parms_len= RNA_parameter_list_arg_count(&parms);
        ret_len= 0;
 
        if(pyargs_len + pykw_len > parms_len) {


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

Reply via email to