diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-23 19:04:43 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-23 19:32:04 +0300 |
commit | e2a827c84869bcfaf7b704e6c4d224be8900ef86 (patch) | |
tree | 6d4fd175818a81bb6b741f4194ddc44a553467f3 /source/blender/blenloader/intern/readfile.c | |
parent | 3fb38d664bcd88258706cb21af0d73b72869bfef (diff) |
Fix crash loading without UI, after recent changes.
Diffstat (limited to 'source/blender/blenloader/intern/readfile.c')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 6d3f95fa63c..70c898a374e 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2877,19 +2877,29 @@ static void lib_link_workspaces(FileData *fd, Main *bmain) IDP_LibLinkProperty(id->properties, fd); id_us_ensure_real(id); - for (WorkSpaceDataRelation *relation = workspace->scene_viewlayer_relations.first; + for (WorkSpaceDataRelation *relation = workspace->scene_viewlayer_relations.first, + *relation_next = NULL; relation != NULL; - relation = relation->next) + relation = relation_next) { + relation_next = relation->next; + relation->parent = newlibadr(fd, id->lib, relation->parent); /* relation->value is set in direct_link_workspace_link_scene_data, * except when loading linked data. */ Scene *scene = relation->parent; - if (scene->id.lib != NULL) { - relation->value = BLI_findstring(&scene->view_layers, relation->value_name, offsetof(ViewLayer, name)); + + if (scene) { + if (scene->id.lib != NULL) { + relation->value = BLI_findstring(&scene->view_layers, relation->value_name, offsetof(ViewLayer, name)); + } + if (relation->value == NULL) { + relation->value = scene->view_layers.first; + } } - if (relation->value == NULL) { - relation->value = scene->view_layers.first; + else { + /* Remove empty relation if scene got lost. */ + BLI_freelinkN(&workspace->scene_viewlayer_relations, relation); } } |