From ee08c27f95908f33a3ed4f97d1d147ca80922b65 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 1 Dec 2012 08:47:39 +0000 Subject: fix [#33368] Crash with multilayer exr node --- source/blender/compositor/nodes/COM_ImageNode.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'source/blender/compositor/nodes/COM_ImageNode.cpp') diff --git a/source/blender/compositor/nodes/COM_ImageNode.cpp b/source/blender/compositor/nodes/COM_ImageNode.cpp index 729cb1b70a0..4293e344c65 100644 --- a/source/blender/compositor/nodes/COM_ImageNode.cpp +++ b/source/blender/compositor/nodes/COM_ImageNode.cpp @@ -83,6 +83,7 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *c is_multilayer_ok = true; for (index = 0; index < numberOfOutputs; index++) { + NodeOperation *operation = NULL; socket = this->getOutputSocket(index); if (socket->isConnected() || index == 0) { bNodeSocket *bnodeSocket = socket->getbNodeSocket(); @@ -91,7 +92,6 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *c RenderPass *rpass = (RenderPass *)BLI_findlink(&rl->passes, passindex); if (rpass) { - NodeOperation *operation = NULL; imageuser->pass = passindex; switch (rpass->channels) { case 1: @@ -105,16 +105,21 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *c case 4: operation = doMultilayerCheck(graph, rl, image, imageuser, framenumber, index, passindex, COM_DT_COLOR); break; - default: - /* XXX add a dummy operation? */ + /* dummy operation is added below */ break; } + if (index == 0 && operation) { addPreviewOperation(graph, context, operation->getOutputSocket()); } } } + + /* incase we can't load the layer */ + if (operation == NULL) { + convertToOperations_invalid_index(graph, index); + } } } } -- cgit v1.2.3