[Bf-blender-cvs] [a97ae83a09e] blender-v3.3-release: Fix T100703: Crash in file reading with ID's referenced from the WM

Campbell Barton noreply at git.blender.org
Tue Aug 30 11:45:16 CEST 2022


Commit: a97ae83a09e0a67168f1d3cdcbafd5b1ff16e3c9
Author: Campbell Barton
Date:   Tue Aug 30 19:24:45 2022 +1000
Branches: blender-v3.3-release
https://developer.blender.org/rBa97ae83a09e0a67168f1d3cdcbafd5b1ff16e3c9

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

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

M	source/blender/windowmanager/intern/wm.c

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

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



More information about the Bf-blender-cvs mailing list