From a97ae83a09e0a67168f1d3cdcbafd5b1ff16e3c9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 30 Aug 2022 19:24:45 +1000 Subject: Fix T100703: Crash in file reading with ID's referenced from the WM Don't decrement ID reference counts as any ID references from the window-managers will have already been freed. Reviewed By: mont29 Ref D15808 --- source/blender/windowmanager/intern/wm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender') diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index 0d74bc259f4..2500d72c850 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -610,7 +610,10 @@ void wm_close_and_free_all(bContext *C, ListBase *wmlist) while ((wm = wmlist->first)) { wm_close_and_free(C, wm); BLI_remlink(wmlist, wm); - BKE_libblock_free_data(&wm->id, true); + /* Don't handle user counts as this is only ever called once #G_MAIN has already been freed via + * #BKE_main_free so any ID's referenced by the window-manager (from ID properties) will crash. + * See: T100703. */ + BKE_libblock_free_data(&wm->id, false); BKE_libblock_free_data_py(&wm->id); MEM_freeN(wm); } -- cgit v1.2.3