From 993c4885c66ac7f6886956965d84875f06b39d9a Mon Sep 17 00:00:00 2001 From: Eric Siegel Date: Thu, 15 Sep 2022 13:52:48 -0700 Subject: [PATCH] Update getimage to support large raster images --- libtiff/tif_getimage.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c index 4a80280e..a4d0c1d6 100644 --- a/libtiff/tif_getimage.c +++ b/libtiff/tif_getimage.c @@ -697,7 +697,8 @@ gtTileContig(TIFFRGBAImage* img, uint32_t* raster, uint32_t w, uint32_t h) this_tw = tw - fromskew; this_toskew = toskew + fromskew; } - (*put)(img, raster+y*w+tocol, tocol, y, this_tw, nrow, fromskew, this_toskew, buf + pos); + tmsize_t roffset = (tmsize_t) y * w + tocol; + (*put)(img, raster + roffset, tocol, y, this_tw, nrow, fromskew, this_toskew, buf + pos); tocol += this_tw; col += this_tw; /* @@ -885,7 +886,8 @@ gtTileSeparate(TIFFRGBAImage* img, uint32_t* raster, uint32_t w, uint32_t h) this_tw = tw - fromskew; this_toskew = toskew + fromskew; } - (*put)(img, raster+y*w+tocol, tocol, y, this_tw, nrow, fromskew, this_toskew, \ + tmsize_t roffset = (tmsize_t) y * w + tocol; + (*put)(img, raster + roffset, tocol, y, this_tw, nrow, fromskew, this_toskew, \ p0 + pos, p1 + pos, p2 + pos, (alpha?(pa+pos):NULL)); tocol += this_tw; col += this_tw; @@ -995,7 +997,8 @@ gtStripContig(TIFFRGBAImage* img, uint32_t* raster, uint32_t w, uint32_t h) pos = ((row + img->row_offset) % rowsperstrip) * scanline + \ ((tmsize_t) img->col_offset * img->samplesperpixel); - (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos); + tmsize_t roffset = (tmsize_t) y * w; + (*put)(img, raster + roffset, 0, y, w, nrow, fromskew, toskew, buf + pos); y += ((flip & FLIP_VERTICALLY) ? -(int32_t) nrow : (int32_t) nrow); } @@ -1153,7 +1156,8 @@ gtStripSeparate(TIFFRGBAImage* img, uint32_t* raster, uint32_t w, uint32_t h) pos = ((row + img->row_offset) % rowsperstrip) * scanline + \ ((tmsize_t) img->col_offset * img->samplesperpixel); - (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, p0 + pos, p1 + pos, + tmsize_t roffset = (tmsize_t) y * w; + (*put)(img, raster + roffset, 0, y, w, nrow, fromskew, toskew, p0 + pos, p1 + pos, p2 + pos, (alpha?(pa+pos):NULL)); y += ((flip & FLIP_VERTICALLY) ? -(int32_t) nrow : (int32_t) nrow); }