Commit: 7b11c717294341f5c288e2dc8432e84bc53663ff
Author: Campbell Barton
Date: Sun Feb 20 21:28:59 2022 +1100
Branches: master
https://developer.blender.org/rB7b11c717294341f5c288e2dc8432e84bc53663ff
RNA: modify debug mode logic for setting invalid unset values
The previous behavior called RNA_enum_item_add a second time,
filled it's contents with invalid values then subtracted totitem,
this caused an unusual reallocation pattern where MEM_recallocN
would run in order to create the dummy item, then again when adding
another itme (reallocating an array of the same size).
Simply memset the array to 0xff instead.
===================================================================
M source/blender/makesrna/intern/rna_define.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_define.c
b/source/blender/makesrna/intern/rna_define.c
index 850accd0b24..5127b418b7f 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -4391,24 +4391,21 @@ void RNA_enum_item_add(EnumPropertyItem **items, int
*totitem, const EnumPropert
if (tot == 0) {
*items = MEM_callocN(sizeof(EnumPropertyItem[8]), __func__);
+ /* Ensure we get crashes on missing calls to 'RNA_enum_item_end', see
T74227. */
+#ifdef DEBUG
+ memset(*items, 0xff, sizeof(EnumPropertyItem[8]));
+#endif
}
else if (tot >= 8 && (tot & (tot - 1)) == 0) {
/* power of two > 8 */
*items = MEM_recallocN_id(*items, sizeof(EnumPropertyItem) * tot * 2,
__func__);
+#ifdef DEBUG
+ memset((*items) + tot, 0xff, sizeof(EnumPropertyItem) * tot);
+#endif
}
(*items)[tot] = *item;
*totitem = tot + 1;
-
- /* Ensure we get crashes on missing calls to 'RNA_enum_item_end', see
T74227. */
-#ifdef DEBUG
- static const EnumPropertyItem item_error = {
- -1, POINTER_FROM_INT(-1), -1, POINTER_FROM_INT(-1),
POINTER_FROM_INT(-1)};
- if (item != &item_error) {
- RNA_enum_item_add(items, totitem, &item_error);
- *totitem -= 1;
- }
-#endif
}
void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs