diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 31af7804058..efbc0d78754 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -526,6 +526,17 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c char prefstr[FILE_MAX]; int success = 0; + /* Indicates whether file was really load from memory. + * + * This is used for versioning code, and for this we can not rely on from_memory + * passed via argument. This is because there might be configuration folder + * exists but it might not have startup.blend and in this case we fallback to + * reading home file from memory. + * + * And in this case versioning code is to be run. + */ + bool read_file_from_memory = false; + /* options exclude eachother */ BLI_assert((from_memory && custom_file) == 0); @@ -578,6 +589,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c } if (success == 0) { + read_file_from_memory = true; success = BKE_read_file_from_memory(C, datatoc_startup_blend, datatoc_startup_blend_size, NULL, true); if (wmbase.first == NULL) wm_clear_default_size(C); BLI_init_temporary_dir(U.tempdir); @@ -600,7 +612,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c G.fileflags &= ~G_FILE_RELATIVE_REMAP; /* check userdef before open window, keymaps etc */ - wm_init_userdef(C, (bool)from_memory); + wm_init_userdef(C, read_file_from_memory); /* match the read WM with current WM */ wm_window_match_do(C, &wmbase);