[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59071] trunk/blender/source/blender/ makesrna/intern: Fix RNA parameter passing issue with dynamic arrays, was computing the wrong

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Aug 11 17:49:27 CEST 2013


Revision: 59071
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59071
Author:   blendix
Date:     2013-08-11 15:49:27 +0000 (Sun, 11 Aug 2013)
Log Message:
-----------
Fix RNA parameter passing issue with dynamic arrays, was computing the wrong
size in some cases.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/makesrna.c
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/makesrna/intern/rna_define.c
    trunk/blender/source/blender/makesrna/intern/rna_internal.h

Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/makesrna.c	2013-08-11 15:27:04 UTC (rev 59070)
+++ trunk/blender/source/blender/makesrna/intern/makesrna.c	2013-08-11 15:49:27 UTC (rev 59071)
@@ -2292,7 +2292,7 @@
 		}
 
 		if (dparm->next)
-			fprintf(f, "\t_data += %d;\n", rna_parameter_size_alloc(dparm->prop));
+			fprintf(f, "\t_data += %d;\n", rna_parameter_size(dparm->prop));
 	}
 
 	if (dfunc->call) {

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2013-08-11 15:27:04 UTC (rev 59070)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2013-08-11 15:49:27 UTC (rev 59071)
@@ -5378,7 +5378,7 @@
 
 	/* allocate data */
 	for (parm = func->cont.properties.first; parm; parm = parm->next) {
-		alloc_size += rna_parameter_size_alloc(parm);
+		alloc_size += rna_parameter_size(parm);
 
 		if (parm->flag & PROP_OUTPUT)
 			parms->ret_count++;
@@ -5440,7 +5440,7 @@
 			}
 		}
 
-		data = ((char *)data) + rna_parameter_size_alloc(parm);
+		data = ((char *)data) + rna_parameter_size(parm);
 	}
 
 	return parms;
@@ -5462,7 +5462,7 @@
 				MEM_freeN(data_alloc->array);
 		}
 
-		tot += rna_parameter_size_alloc(parm);
+		tot += rna_parameter_size(parm);
 	}
 
 	MEM_freeN(parms->data);
@@ -5497,7 +5497,7 @@
 	iter->offset = 0;
 
 	if (iter->valid) {
-		iter->size = rna_parameter_size_alloc(iter->parm);
+		iter->size = rna_parameter_size(iter->parm);
 		iter->data = (((char *)iter->parms->data)); /* +iter->offset, always 0 */
 	}
 }
@@ -5509,7 +5509,7 @@
 	iter->valid = iter->parm != NULL;
 
 	if (iter->valid) {
-		iter->size = rna_parameter_size_alloc(iter->parm);
+		iter->size = rna_parameter_size(iter->parm);
 		iter->data = (((char *)iter->parms->data) + iter->offset);
 	}
 }

Modified: trunk/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_define.c	2013-08-11 15:27:04 UTC (rev 59070)
+++ trunk/blender/source/blender/makesrna/intern/rna_define.c	2013-08-11 15:49:27 UTC (rev 59071)
@@ -3039,13 +3039,13 @@
 int rna_parameter_size(PropertyRNA *parm)
 {
 	PropertyType ptype = parm->type;
-	int len = parm->totarraylength; /* only supports fixed length at the moment */
+	int len = parm->totarraylength;
 
-	if (len > 0) {
-		/* XXX in other parts is mentioned that strings can be dynamic as well */
-		if (parm->flag & PROP_DYNAMIC)
-			return sizeof(void *);
+	/* XXX in other parts is mentioned that strings can be dynamic as well */
+	if (parm->flag & PROP_DYNAMIC)
+		return sizeof(ParameterDynAlloc);
 
+	if (len > 0) {
 		switch (ptype) {
 			case PROP_BOOLEAN:
 			case PROP_INT:
@@ -3106,18 +3106,6 @@
 	return sizeof(void *);
 }
 
-/* this function returns the size of the memory allocated for the parameter,
- * useful for instance for memory alignment or for storing additional information */
-int rna_parameter_size_alloc(PropertyRNA *parm)
-{
-	int size = rna_parameter_size(parm);
-
-	if (parm->flag & PROP_DYNAMIC)
-		size += sizeof(((ParameterDynAlloc *)NULL)->array_tot);
-
-	return size;
-}
-
 /* Dynamic Enums */
 
 void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)

Modified: trunk/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal.h	2013-08-11 15:27:04 UTC (rev 59070)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal.h	2013-08-11 15:49:27 UTC (rev 59071)
@@ -402,7 +402,6 @@
 /* Functions */
 
 int rna_parameter_size(struct PropertyRNA *parm);
-int rna_parameter_size_alloc(struct PropertyRNA *parm);
 
 struct Mesh *rna_Main_meshes_new_from_object(
         struct Main *bmain, struct ReportList *reports, struct Scene *sce,




More information about the Bf-blender-cvs mailing list