From db18ba07b502fd64955626241a6a40333cdc63bd Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 2 Nov 2020 17:00:55 +0100 Subject: Fix py-defined pointer properties wrong tag re ID ownership. This fixes critical bug with liboverride when soe add-ons add some RNA ID Pointer properties. ID pointers should **never** have ownership of their ID when defined from python. (As a reminder, RNA properties owning their ID pointers are extremely rare even from C code, only embedded IDs (root node trees, master collections) and the shape keys snowflakes are concerned.) --- source/blender/makesrna/intern/rna_define.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source') diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 8eb964b8c17..c31d170113d 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -1843,6 +1843,10 @@ void RNA_def_property_struct_runtime(PropertyRNA *prop, StructRNA *type) DefRNA.error = true; break; } + + if ((type->flag & STRUCT_ID) != 0) { + prop->flag |= PROP_PTR_NO_OWNERSHIP; + } } void RNA_def_property_enum_native_type(PropertyRNA *prop, const char *native_enum_type) -- cgit v1.2.3