From 75e2ae72c7771a89f3fe4e988d4deb30c9367313 Mon Sep 17 00:00:00 2001 From: Karl Semich <> Date: Mon, 15 Jan 2018 12:53:17 +0100 Subject: Allow for multi-gigapixel renders This patch fixes a 32-bit overflow that occurs on 64-bit systems due to a numeric literal being treated as 32-bit. This patch allows for the generation of images that occupy more than 4GB of RAM, which previously caused a crash. Reviewers: sergey Reviewed By: sergey Differential Revision: https://developer.blender.org/D2975 --- source/blender/imbuf/intern/openexr/openexr_api.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source/blender/imbuf') diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 2fa830dc42a..539b9fa45b4 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -1028,13 +1028,13 @@ void IMB_exr_write_channels(void *handle) for (size_t i = 0; i < num_pixels; ++i, ++cur) { *cur = rect[i * echan->xstride]; } - half *rect_to_write = current_rect_half + (data->height - 1) * data->width; + half *rect_to_write = current_rect_half + (data->height - 1L) * data->width; frameBuffer.insert(echan->name, Slice(Imf::HALF, (char *)rect_to_write, sizeof(half), -data->width * sizeof(half))); current_rect_half += num_pixels; } else { - float *rect = echan->rect + echan->xstride * (data->height - 1) * data->width; + float *rect = echan->rect + echan->xstride * (data->height - 1L) * data->width; frameBuffer.insert(echan->name, Slice(Imf::FLOAT, (char *)rect, echan->xstride * sizeof(float), -echan->ystride * sizeof(float))); } -- cgit v1.2.3