diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-03-16 04:18:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-03-16 07:17:45 +0300 |
commit | e125305af41a7360c52b9a38024b7e24fde06d70 (patch) | |
tree | 89670ef582473388c7c87fe42f4ae81f0a44132d /source/blender/python/intern/bpy_props.h | |
parent | be51d671b500e8b6881295778de7272a70504b71 (diff) |
Fix T86332: Error using lambda in annotations in Python 3.10
Callbacks used in `bpy.props` didn't hold a references to the functions
they used.
While this has been the case since early 2.5x it didn't cause any
problems as long as the class held a reference.
With Python 3.10 or when using `from __future__ import annotations`,
the annotations are no longer owned by the class once evaluated.
Resolve this by holding a reference in the module, which now supports
traverse & clear callbacks so the objects are visible to Python's
garbage collector.
Also refactor storage of Python data, moving from an array into a struct.
Diffstat (limited to 'source/blender/python/intern/bpy_props.h')
-rw-r--r-- | source/blender/python/intern/bpy_props.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/source/blender/python/intern/bpy_props.h b/source/blender/python/intern/bpy_props.h index 6cebf82d373..d467166f354 100644 --- a/source/blender/python/intern/bpy_props.h +++ b/source/blender/python/intern/bpy_props.h @@ -25,6 +25,7 @@ extern "C" { #endif PyObject *BPY_rna_props(void); +void BPY_rna_props_clear_all(void); PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw); PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw); |