diff options
author | Karl Semich <> | 2018-01-15 14:53:17 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-01-15 14:57:12 +0300 |
commit | 75e2ae72c7771a89f3fe4e988d4deb30c9367313 (patch) | |
tree | b2b87c7daa1ee17fa4efd0cf671ab7e08ce976e0 /source/blender/imbuf/intern | |
parent | 2c2203d82afa3e521d9fa34215c572227bc1e3a3 (diff) |
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
Diffstat (limited to 'source/blender/imbuf/intern')
-rw-r--r-- | source/blender/imbuf/intern/openexr/openexr_api.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
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))); } |