diff options
author | Antonio Vazquez <blendergit@gmail.com> | 2022-11-08 18:29:56 +0300 |
---|---|---|
committer | Antonio Vazquez <blendergit@gmail.com> | 2022-11-08 18:29:56 +0300 |
commit | aa9b976e9f9b8baff194f5bfadcf9e7694cf8d15 (patch) | |
tree | b30ce7abaa65be85c147222cb074571c056b59df /release | |
parent | 410b87ca781d6b6b061bab0440005ac1ab82688f (diff) | |
parent | bbb1d3e5e7eb4059a0324ae786e1e793852963a9 (diff) |
Merge branch 'master' into temp-gpencil-automasktemp-gpencil-automask
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/modules/rna_info.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index e2bbc4077a1..07daf7c55eb 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -286,7 +286,10 @@ class InfoPropertyRNA: self.enum_pointer = 0 if self.type == "enum": - items = tuple(rna_prop.enum_items) + # WARNING: don't convert to a tuple as this causes dynamically allocated enums to access freed memory + # since freeing the iterator may free the memory used to store the internal `EnumPropertyItem` array. + # To support this properly RNA would have to support owning the dynamically allocated memory. + items = rna_prop.enum_items items_static = tuple(rna_prop.enum_items_static) self.enum_items[:] = [(item.identifier, item.name, item.description) for item in items] self.is_enum_flag = rna_prop.is_enum_flag @@ -295,6 +298,7 @@ class InfoPropertyRNA: item = (items_static or items) if item: self.enum_pointer = item[0].as_pointer() + del items, items_static, item else: self.is_enum_flag = False |