Temporary "fix" for crash when saving OpenEXR Multi-View from Image Editor
This commit is contained in:
parent
20a94e956a
commit
138decb7dc
Notes:
blender-bot
2023-02-14 08:28:48 +01:00
Referenced by issue #46655, Blender Crashes on opening 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];
|
||||
|
|
Loading…
Reference in New Issue