diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-04-24 16:31:07 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-04-24 16:37:32 +0300 |
commit | 0f1ee611d4499fbac050b7a997e50bc234a252f9 (patch) | |
tree | 0cea65bf1f560715857a784d24ba1839cfde1167 /source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c | |
parent | aa95f8019e4204ea50210add1b2c2ed1934b92c9 (diff) |
Fix T85567: Crash accessing gizmo group on `__del__`
- Re-order freeing so an instances __del__ method runs before the
`ExtensionRNA` has been freed.
- "remove" functions no longer free the gizmo/gizmo-group memory,
needed so the identifier used when freeing the extension
doesn't use the freed identifier.
Diffstat (limited to 'source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c')
-rw-r--r-- | source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c index ca1684811d5..062731dfb3d 100644 --- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c +++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c @@ -1058,12 +1058,14 @@ bool WM_gizmo_group_type_ensure(const char *idname) return WM_gizmo_group_type_ensure_ptr(gzgt); } +/** + * Call #WM_gizmo_group_type_free_ptr after to remove & free. + */ void WM_gizmo_group_type_remove_ptr_ex(struct Main *bmain, wmGizmoGroupType *gzgt, wmGizmoMapType *gzmap_type) { WM_gizmomaptype_group_unlink(NULL, bmain, gzmap_type, gzgt); - WM_gizmogrouptype_free_ptr(gzgt); } void WM_gizmo_group_type_remove_ptr(struct Main *bmain, wmGizmoGroupType *gzgt) { |