From f5055d86887a2c139080f26ab0ba9a00cf077ef6 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 23 May 2014 18:30:36 +0200 Subject: Some operation allowed to set invalid active scene render layer Forbid this now and do tricks in the versioning code to repair corrupted files. Thanks to Pablo, Caminandes and Koro for discovering this bug! --- source/blender/editors/space_node/node_edit.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source/blender/editors/space_node/node_edit.c') diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index fc0c82faba8..5bbe0c1c229 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -695,7 +695,12 @@ void ED_node_set_active(Main *bmain, bNodeTree *ntree, bNode *node) for (scene = bmain->scene.first; scene; scene = scene->id.next) { if (scene->nodetree && scene->use_nodes && ntreeHasTree(scene->nodetree, ntree)) { if (node->id == NULL || node->id == (ID *)scene) { + int num_layers = BLI_countlist(&scene->r.layers); scene->r.actlay = node->custom1; + /* Clamp the value, because it might have come from a different + * scene which could have more render layers than new one. + */ + scene->r.actlay = min_ff(scene->r.actlay, num_layers - 1); } } } -- cgit v1.2.3