[Bf-blender-cvs] [d0f4a4fc675] workspaces: Fix crash opening startup.blend as regular .blend (again)

Julian Eisel noreply at git.blender.org
Sun May 7 02:03:35 CEST 2017


Commit: d0f4a4fc6752bd244392bbab01b7c6aa8d1382d6
Author: Julian Eisel
Date:   Sun May 7 02:00:21 2017 +0200
Branches: workspaces
https://developer.blender.org/rBd0f4a4fc6752bd244392bbab01b7c6aa8d1382d6

Fix crash opening startup.blend as regular .blend (again)

Earlier fix could cause issues and was reverted in rBfc601d8eaa79a7.
Fixed now by avoiding CTX_ call when context hasn't been setup
completely yet.
I think it's fine to assume G.main equals CTX_data_main call at this point.

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

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

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

diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index b7821a24fa9..203d5d1c18f 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -326,10 +326,8 @@ static void wm_window_match_do(bContext *C, ListBase *oldwmlist)
 }
 
 /* in case UserDef was read, we re-initialize all, and do versioning */
-static void wm_init_userdef(bContext *C, const bool use_factory_settings)
+static void wm_init_userdef(Main *bmain, const bool use_factory_settings)
 {
-	Main *bmain = CTX_data_main(C);
-
 	/* versioning is here */
 	UI_init_userdef();
 	
@@ -591,7 +589,7 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
 
 		if (retval == BKE_BLENDFILE_READ_OK_USERPREFS) {
 			/* in case a userdef is read from regular .blend */
-			wm_init_userdef(C, false);
+			wm_init_userdef(G.main, false);
 		}
 		
 		if (retval != BKE_BLENDFILE_READ_FAIL) {
@@ -837,7 +835,7 @@ int wm_homefile_read(
 	G.fileflags &= ~G_FILE_RELATIVE_REMAP;
 	
 	/* check userdef before open window, keymaps etc */
-	wm_init_userdef(C, read_userdef_from_memory);
+	wm_init_userdef(CTX_data_main(C), read_userdef_from_memory);
 	
 	/* match the read WM with current WM */
 	wm_window_match_do(C, &wmbase);




More information about the Bf-blender-cvs mailing list