[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27682] trunk/blender/source/blender: fix for parsing python args to rna functions, was using allocated size as argument count.
Brecht Van Lommel
brecht at blender.org
Tue Mar 23 16:04:11 CET 2010
Revision: 27682
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27682
Author: blendix
Date: 2010-03-23 16:04:06 +0100 (Tue, 23 Mar 2010)
Log Message:
-----------
fix for parsing python args to rna functions, was using allocated size as argument count.
(commit 27670 by Campbell from render25 branch)
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/RNA_access.h
trunk/blender/source/blender/makesrna/RNA_types.h
trunk/blender/source/blender/makesrna/intern/rna_access.c
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h 2010-03-23 14:58:36 UTC (rev 27681)
+++ trunk/blender/source/blender/makesrna/RNA_access.h 2010-03-23 15:04:06 UTC (rev 27682)
@@ -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: trunk/blender/source/blender/makesrna/RNA_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_types.h 2010-03-23 14:58:36 UTC (rev 27681)
+++ trunk/blender/source/blender/makesrna/RNA_types.h 2010-03-23 15:04:06 UTC (rev 27682)
@@ -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: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c 2010-03-23 14:58:36 UTC (rev 27681)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c 2010-03-23 15:04:06 UTC (rev 27682)
@@ -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: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2010-03-23 14:58:36 UTC (rev 27681)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2010-03-23 15:04:06 UTC (rev 27682)
@@ -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) {
More information about the Bf-blender-cvs
mailing list