rna support for passing dynamic sized arrays to rna functions
[blender.git] / source / blender / python / intern / bpy_rna.c
index 5cb6dfca0b23252623ec8af27cca90bba52af1ae..6133a1da616a482dccd1a7336243cdc8120ec052 100644 (file)
@@ -55,7 +55,7 @@
 #include "../generic/mathutils.h" /* so we can have mathutils callbacks */
 #include "../generic/IDProp.h" /* for IDprop lookups */
 
-
+static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, void *data, PyObject *value, const char *error_prefix);
 static PyObject *pyrna_prop_array_subscript_slice(BPy_PropertyRNA *self, PointerRNA *ptr, PropertyRNA *prop, int start, int stop, int length);
 static Py_ssize_t pyrna_prop_array_length(BPy_PropertyRNA *self);
 static Py_ssize_t pyrna_prop_collection_length(BPy_PropertyRNA *self);
@@ -972,7 +972,7 @@ static PyObject *pyrna_func_to_py(BPy_DummyPointerRNA *pyrna, FunctionRNA *func)
 
 
 
-int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, void *data, PyObject *value, const char *error_prefix)
+static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, void *data, PyObject *value, const char *error_prefix)
 {
        /* XXX hard limits should be checked here */
        int type = RNA_property_type(prop);
@@ -3412,9 +3412,9 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, ParameterList *parms, PropertyRNA *
                int len;
 
                if (flag & PROP_DYNAMIC) {
-                       len= RNA_parameter_length_get_data(parms, prop, data);
-
-                       data= *((void **)data);
+                       ParameterDynAlloc *data_alloc= data;
+                       len= data_alloc->array_tot;
+                       data= data_alloc->array;
                }
                else
                        len= RNA_property_array_length(ptr, prop);