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>2018-05-23 19:04:43 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-05-23 19:32:04 +0300
commite2a827c84869bcfaf7b704e6c4d224be8900ef86 (patch)
tree6d4fd175818a81bb6b741f4194ddc44a553467f3 /source/blender/blenloader/intern/readfile.c
parent3fb38d664bcd88258706cb21af0d73b72869bfef (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.c22
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);
}
}