[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