Temporary "fix" for crash when saving OpenEXR Multi-View from Image Editor

This commit is contained in:
Dalai Felinto 2015-10-28 14:05:49 -02:00
parent 20a94e956a
commit 138decb7dc
Notes: blender-bot 2023-02-14 08:28:48 +01:00
Referenced by issue #46655, Blender Crashes on opening file
1 changed files with 17 additions and 0 deletions

View File

@ -32,6 +32,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <stdexcept>
#include <fstream>
#include <string>
#include <set>
@ -428,6 +429,14 @@ static bool imb_save_openexr_half(
const size_t offset = view_id * width * height;
RGBAZ *to = pixels + offset;
/* TODO (dfelinto)
* In some cases we get NULL ibufs, it needs investigation, meanwhile prevent crash
* Multiview Render + Image Editor + OpenEXR + Multi-View
*/
if (view_ibuf == NULL) {
throw std::runtime_error(std::string("Missing data to write to ") + name);
}
/* indicate used buffers */
frameBuffer.insert(insertViewName("R", views, view_id), Slice(HALF, (char *) &pixels[offset].r, xstride, ystride));
frameBuffer.insert(insertViewName("G", views, view_id), Slice(HALF, (char *) &pixels[offset].g, xstride, ystride));
@ -543,6 +552,14 @@ static bool imb_save_openexr_float(
float *rect[4] = {NULL, NULL, NULL, NULL};
ImBuf *view_ibuf = is_multiview ? getbuffer(ibuf->userdata, view_id) : ibuf;
/* TODO (dfelinto)
* In some cases we get NULL ibufs, it needs investigation, meanwhile prevent crash
* Multiview Render + Image Editor + OpenEXR + Multi-View
*/
if (view_ibuf == NULL) {
throw std::runtime_error(std::string("Missing data to write to ") + name);
}
/* last scanline, stride negative */
rect[0] = view_ibuf->rect_float + channels * (height - 1) * width;
rect[1] = (channels >= 2) ? rect[0] + 1 : rect[0];