[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