Commit: a0881a4e9409c5bbc4a9eb2babcaaff03a8b26c7
Author: Campbell Barton
Date:   Thu Feb 21 14:46:54 2019 +1100
Branches: master
https://developer.blender.org/rBa0881a4e9409c5bbc4a9eb2babcaaff03a8b26c7

Fix assert w/ multi-dimensional array printing

Own oversight adding assert, result from MEM_allocN_len may be padded.

===================================================================

M       source/blender/makesrna/intern/rna_access.c

===================================================================

diff --git a/source/blender/makesrna/intern/rna_access.c 
b/source/blender/makesrna/intern/rna_access.c
index 0bd6c5352b6..2c365c36b72 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -6316,20 +6316,24 @@ static const char *bool_as_py_string(const int var)
        return var ? "True" : "False";
 }
 
-static void *rna_array_as_string_alloc(int type, int len, PointerRNA *ptr, 
PropertyRNA *prop)
+static void *rna_array_as_string_alloc(
+        int type, int len, PointerRNA *ptr, PropertyRNA *prop, void 
**r_buf_end)
 {
        void *buf_ret = NULL;
        if (type == PROP_BOOLEAN) {
                bool *buf = buf_ret = MEM_mallocN(sizeof(*buf) * len,  
__func__);
                RNA_property_boolean_get_array(ptr, prop, buf);
+               *r_buf_end = buf + len;
        }
        else if (type == PROP_INT) {
                int *buf = buf_ret = MEM_mallocN(sizeof(*buf) * len,  __func__);
                RNA_property_int_get_array(ptr, prop, buf);
+               *r_buf_end = buf + len;
        }
        else if (type == PROP_FLOAT) {
                float *buf = buf_ret = MEM_mallocN(sizeof(*buf) * len,  
__func__);
                RNA_property_float_get_array(ptr, prop, buf);
+               *r_buf_end = buf + len;
        }
        else {
                BLI_assert(0);
@@ -6391,14 +6395,15 @@ static void rna_array_as_string_recursive(
 
 static void rna_array_as_string(int type, int len, PointerRNA *ptr, 
PropertyRNA *prop, DynStr *dynstr)
 {
-       void *buf = rna_array_as_string_alloc(type, len, ptr, prop);
-       void *temp_buf = buf;
+       void *buf_end;
+       void *buf = rna_array_as_string_alloc(type, len, ptr, prop, &buf_end);
+       void *buf_step = buf;
        int totdim, dim_size[RNA_MAX_ARRAY_DIMENSION];
 
        totdim = RNA_property_array_dimension(ptr, prop, dim_size);
 
-       rna_array_as_string_recursive(type, &temp_buf, totdim, dim_size, 
dynstr);
-       BLI_assert(temp_buf == (char *)buf + MEM_allocN_len(buf));
+       rna_array_as_string_recursive(type, &buf_step, totdim, dim_size, 
dynstr);
+       BLI_assert(buf_step == buf_end);
        MEM_freeN(buf);
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to