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.)
This commit is contained in:
Bastien Montagne 2020-11-02 17:00:55 +01:00
parent 4c460a2dbd
commit db18ba07b5
Notes: blender-bot 2023-02-13 23:16:02 +01:00
Referenced by issue #81963, Random rare crashes in override code - reported by studio
1 changed files with 4 additions and 0 deletions

View File

@ -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)