[Bf-blender-cvs] [db18ba07b50] master: Fix py-defined pointer properties wrong tag re ID ownership.

Bastien Montagne noreply at git.blender.org
Mon Nov 2 17:08:30 CET 2020


Commit: db18ba07b502fd64955626241a6a40333cdc63bd
Author: Bastien Montagne
Date:   Mon Nov 2 17:00:55 2020 +0100
Branches: master
https://developer.blender.org/rBdb18ba07b502fd64955626241a6a40333cdc63bd

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

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

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



More information about the Bf-blender-cvs mailing list