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:
authorCampbell Barton <ideasman42@gmail.com>2012-09-04 23:42:09 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-09-04 23:42:09 +0400
commit1d4316f35fcf2f4b9ed73b648422f4e36a071881 (patch)
treebf97cc2aac690567cd5fe79a0c511ed47e81a9f6 /source/blender/compositor/nodes/COM_ImageNode.cpp
parent306e2b48786bc27d818c1ee04382cf654310c3a0 (diff)
fix [#32490] Compsitor crashes on missing OpenEXR multilayer files
Diffstat (limited to 'source/blender/compositor/nodes/COM_ImageNode.cpp')
-rw-r--r--source/blender/compositor/nodes/COM_ImageNode.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/compositor/nodes/COM_ImageNode.cpp b/source/blender/compositor/nodes/COM_ImageNode.cpp
index addde140b9f..2d13ffb82b6 100644
--- a/source/blender/compositor/nodes/COM_ImageNode.cpp
+++ b/source/blender/compositor/nodes/COM_ImageNode.cpp
@@ -72,12 +72,16 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *c
/* force a load, we assume iuser index will be set OK anyway */
if (image && image->type == IMA_TYPE_MULTILAYER) {
+ bool is_multilayer_ok = false;
BKE_image_get_ibuf(image, imageuser);
if (image->rr) {
RenderLayer *rl = (RenderLayer *)BLI_findlink(&image->rr->layers, imageuser->layer);
if (rl) {
OutputSocket *socket;
int index;
+
+ is_multilayer_ok = true;
+
for (index = 0; index < numberOfOutputs; index++) {
socket = this->getOutputSocket(index);
if (socket->isConnected() || index == 0) {
@@ -114,6 +118,11 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *c
}
}
}
+
+ /* without this, multilayer that fail to load will crash blender [#32490] */
+ if (is_multilayer_ok == false) {
+ convertToOperations_invalid(graph, context);
+ }
}
else {
if (numberOfOutputs > 0) {