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

Reply via email to