diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-11-22 13:41:06 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-11-22 13:41:14 +0300 |
commit | ed1278b0bcddc50a13ea31225a0dfc0de643a637 (patch) | |
tree | 5eec3351fc89c6f6a9b516dd79c880f5d74ac1e9 | |
parent | 3a95bdfc65d883e7db006fdaadb8ed2cd6553239 (diff) |
Fix SceneRenderLayer memory leak for files created with 2.8
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index b261935c09e..1be4402012d 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -725,7 +725,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) } { - if (!DNA_struct_elem_find(fd->filesdna, "SceneLayer", "FreestyleConfig", "freestyle_config")) { + if ((DNA_struct_elem_find(fd->filesdna, "SceneLayer", "FreestyleConfig", "freestyle_config") == false) && + DNA_struct_elem_find(fd->filesdna, "Scene", "ListBase", "render_layers")) { for (Scene *scene = main->scene.first; scene; scene = scene->id.next) { SceneLayer *scene_layer; for (scene_layer = scene->render_layers.first; scene_layer; scene_layer = scene_layer->next) { @@ -735,6 +736,15 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main) scene_layer->pass_alpha_threshold = 0.5f; BKE_freestyle_config_init(&scene_layer->freestyle_config); } + + for (SceneRenderLayer *srl = scene->r.layers.first; srl; srl = srl->next) { + if (srl->prop) { + IDP_FreeProperty(srl->prop); + MEM_freeN(srl->prop); + } + BKE_freestyle_config_free(&srl->freestyleConfig); + } + BLI_freelistN(&scene->r.layers); } } } |