summaryrefslogtreecommitdiff
path: root/external/libtiff/ofz68840.patch
blob: 0a8721ebe012afb5b53eb5c80cff377009cc5c20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--- a/libtiff/tif_tile.c
+++ b/libtiff/tif_tile.c
@@ -233,7 +233,13 @@
             _TIFFMultiply64(tif, samplingrow_size, samplingblocks_ver, module));
     }
     else
-        return (_TIFFMultiply64(tif, nrows, TIFFTileRowSize64(tif), module));
+    {
+        uint64_t row_size = TIFFTileRowSize64(tif);
+        /* I think the way this works the expectation is there are always even num of samples */
+        if (td->td_photometric == PHOTOMETRIC_YCBCR)
+            row_size = TIFFroundup_64(row_size, 2);
+        return (_TIFFMultiply64(tif, nrows, row_size, module));
+    }
 }
 tmsize_t TIFFVTileSize(TIFF *tif, uint32_t nrows)
 {