Fix T49417: Cycles crash - can't use 5 Gigabyte Tile EXR texture file

Was an integer overflow issue when calculating offsets.
This commit is contained in:
Sergey Sharybin
2016-09-22 17:30:31 +02:00
parent 4e031073df
commit d84c55f0fa

View File

@@ -587,8 +587,7 @@ bool ImageManager::file_load_float_image(Image *img, ImageDataType type, device_
} }
if(depth <= 1) { if(depth <= 1) {
int scanlinesize = width*components*sizeof(float); size_t scanlinesize = ((size_t)width)*components*sizeof(float);
in->read_image(TypeDesc::FLOAT, in->read_image(TypeDesc::FLOAT,
(uchar*)readpixels + (height-1)*scanlinesize, (uchar*)readpixels + (height-1)*scanlinesize,
AutoStride, AutoStride,
@@ -696,8 +695,7 @@ bool ImageManager::file_load_half_image(Image *img, ImageDataType type, device_v
} }
if(depth <= 1) { if(depth <= 1) {
int scanlinesize = width*components*sizeof(half); size_t scanlinesize = ((size_t)width)*components*sizeof(half);
in->read_image(TypeDesc::HALF, in->read_image(TypeDesc::HALF,
(uchar*)readpixels + (height-1)*scanlinesize, (uchar*)readpixels + (height-1)*scanlinesize,
AutoStride, AutoStride,