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, _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs