external/libtiff/UnpackedTarball_libtiff.mk |    1 +
 external/libtiff/ofz65182.patch             |   23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+)

New commits:
commit f78a9d7d86af7d513ec7020ccfa96f6051d45fdc
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue Dec 19 17:37:00 2023 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Wed Dec 20 09:31:22 2023 +0100

    ofz#65182 putcontig8bitYCbCr22tile issue
    
    Change-Id: I0242059b17d07c0ab4ec83aabd073ee31c4631d2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161031
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/external/libtiff/UnpackedTarball_libtiff.mk 
b/external/libtiff/UnpackedTarball_libtiff.mk
index f7eeb6ace868..7f27c8d3fee7 100644
--- a/external/libtiff/UnpackedTarball_libtiff.mk
+++ b/external/libtiff/UnpackedTarball_libtiff.mk
@@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libtiff,1))
 $(eval $(call gb_UnpackedTarball_add_patches,libtiff,\
     external/libtiff/libtiff.linknolibs.patch \
     external/libtiff/0001-ofz-54685-Timeout.patch \
+    external/libtiff/ofz65182.patch \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/libtiff/ofz65182.patch b/external/libtiff/ofz65182.patch
new file mode 100644
index 000000000000..d4b18e4ade3e
--- /dev/null
+++ b/external/libtiff/ofz65182.patch
@@ -0,0 +1,23 @@
+diff --git a/libtiff/tif_strip.c b/libtiff/tif_strip.c
+index 820a2544..afd7cb6e 100644
+--- a/libtiff/tif_strip.c
++++ b/libtiff/tif_strip.c
+@@ -287,7 +287,17 @@ uint64_t TIFFScanlineSize64(TIFF *tif)
+         else
+         {
+             uint64_t scanline_samples;
+-            scanline_samples = _TIFFMultiply64(tif, td->td_imagewidth,
++            uint32_t scanlinewidth = td->td_imagewidth;
++
++            if (td->td_photometric == PHOTOMETRIC_YCBCR)
++            {
++                uint16_t SubsamplingHor, SubsamplingVer;
++                TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, 
&SubsamplingHor, &SubsamplingVer);
++                if (SubsamplingHor > 1) // roundup width for YCbCr
++                    scanlinewidth = TIFFroundup_32(scanlinewidth, 
SubsamplingHor);
++          }
++
++            scanline_samples = _TIFFMultiply64(tif, scanlinewidth,
+                                                td->td_samplesperpixel, 
module);
+             scanline_size =
+                 TIFFhowmany_64(_TIFFMultiply64(tif, scanline_samples,

Reply via email to