[Bf-blender-cvs] [fdf5834b444] blender2.8: Fix crash reading old userpref.blend
Sergey Sharybin
noreply at git.blender.org
Mon Apr 23 11:46:42 CEST 2018
Commit: fdf5834b444de90507bdc67e979e42fcfecc6bd6
Author: Sergey Sharybin
Date: Mon Apr 23 11:45:40 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBfdf5834b444de90507bdc67e979e42fcfecc6bd6
Fix crash reading old userpref.blend
While window manager is supposed to exist after file was fully read
and do-versioned, we can not rely on window manager to exist while
reading file and setting up an environment.
===================================================================
M source/blender/blenloader/intern/versioning_280.c
===================================================================
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 661b7b53260..09e53bc9eb7 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -654,32 +654,34 @@ void do_versions_after_linking_280(Main *main)
/* SpaceTime & SpaceLogic removal/replacing */
if (!MAIN_VERSION_ATLEAST(main, 280, 9)) {
const wmWindowManager *wm = main->wm.first;
- const Scene *scene = main->scene.first;
+ if (wm != NULL) {
+ const Scene *scene = main->scene.first;
- /* Action editors need a scene for creation. First, update active
- * screens using the active scene of the window they're displayed in.
- * Next, update remaining screens using first scene in main listbase. */
+ /* Action editors need a scene for creation. First, update active
+ * screens using the active scene of the window they're displayed in.
+ * Next, update remaining screens using first scene in main listbase. */
- for (wmWindow *win = wm->windows.first; win; win = win->next) {
- const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
- for (ScrArea *area = screen->areabase.first; area; area = area->next) {
- if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
- do_version_area_change_space_to_space_action(area, win->scene);
+ for (wmWindow *win = wm->windows.first; win; win = win->next) {
+ const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
+ for (ScrArea *area = screen->areabase.first; area; area = area->next) {
+ if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
+ do_version_area_change_space_to_space_action(area, win->scene);
- /* Don't forget to unset! */
- area->butspacetype = SPACE_EMPTY;
+ /* Don't forget to unset! */
+ area->butspacetype = SPACE_EMPTY;
+ }
}
}
- }
- for (bScreen *screen = main->screen.first; screen; screen = screen->id.next) {
- for (ScrArea *area = screen->areabase.first; area; area = area->next) {
- if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
- /* Areas that were already handled won't be handled again */
- do_version_area_change_space_to_space_action(area, scene);
+ for (bScreen *screen = main->screen.first; screen; screen = screen->id.next) {
+ for (ScrArea *area = screen->areabase.first; area; area = area->next) {
+ if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
+ /* Areas that were already handled won't be handled again */
+ do_version_area_change_space_to_space_action(area, scene);
- /* Don't forget to unset! */
- area->butspacetype = SPACE_EMPTY;
+ /* Don't forget to unset! */
+ area->butspacetype = SPACE_EMPTY;
+ }
}
}
}
More information about the Bf-blender-cvs
mailing list