Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-01 02:34:25 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-03-01 03:39:43 +0300
commite5194835de457d69def325767c912035bc994f5c (patch)
treea217634e865c02a8620908f49e5d6eba04fbeba7 /source/blender/blenloader
parent805f8f8230f048e86d92f016588fb62af87857b5 (diff)
Fix T61929: crash on undo in some files with local view.
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/intern/readfile.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 7145e67a4f2..fec4f3486d5 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7823,7 +7823,9 @@ static void lib_link_window_scene_data_restore(wmWindow *win, Scene *scene, View
v3d->localvd = NULL;
v3d->local_view_uuid = 0;
- for (ARegion *ar = area->regionbase.first; ar; ar = ar->next) {
+ /* Regionbase storage is different depending if the space is active. */
+ ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : &sl->regionbase;
+ for (ARegion *ar = regionbase->first; ar; ar = ar->next) {
if (ar->regiontype == RGN_TYPE_WINDOW) {
RegionView3D *rv3d = ar->regiondata;
if (rv3d->localvd) {
@@ -7854,8 +7856,9 @@ static void lib_link_workspace_layout_restore(struct IDNameLib_Map *id_map, Main
v3d->camera = restore_pointer_by_name(id_map, (ID *)v3d->camera, USER_REAL);
v3d->ob_centre = restore_pointer_by_name(id_map, (ID *)v3d->ob_centre, USER_REAL);
- /* free render engines for now */
- for (ar = sa->regionbase.first; ar; ar = ar->next) {
+ /* Free render engines for now. */
+ ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;
+ for (ar = regionbase->first; ar; ar = ar->next) {
if (ar->regiontype == RGN_TYPE_WINDOW) {
RegionView3D *rv3d = ar->regiondata;
if (rv3d && rv3d->render_engine) {