vcl/source/filter/itiff/itiff.cxx |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

New commits:
commit 55a5e9baa5a707b04aeda7b1ea4dc983483d5ce3
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Feb 16 16:24:58 2023 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Thu Feb 16 19:15:44 2023 +0000

    Resolves: tdf#151395 need to track tiff offset from start of stream
    
    when importing them from EPS
    
    Change-Id: Ia3ba2aa188f8dcee0ede6d43311c5dcdccb1eb25
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147162
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/source/filter/itiff/itiff.cxx 
b/vcl/source/filter/itiff/itiff.cxx
index a306317b60b0..5abd97ed2d59 100644
--- a/vcl/source/filter/itiff/itiff.cxx
+++ b/vcl/source/filter/itiff/itiff.cxx
@@ -38,11 +38,13 @@ namespace
     struct Context
     {
         SvStream& rStream;
+        tsize_t nStart;
         tsize_t nSize;
         bool bAllowOneShortRead;
-        Context(SvStream& rInStream, tsize_t nInSize)
+        Context(SvStream& rInStream)
             : rStream(rInStream)
-            , nSize(nInSize)
+            , nStart(rInStream.Tell())
+            , nSize(rInStream.remainingSize())
             , bAllowOneShortRead(false)
         {
         }
@@ -76,9 +78,10 @@ static toff_t tiff_seek(thandle_t handle, toff_t offset, int 
whence)
     switch (whence)
     {
         case SEEK_SET:
+            offset = pContext->nStart + offset;
             break;
         case SEEK_CUR:
-            offset = pContext->rStream.Tell() + offset;;
+            offset = pContext->rStream.Tell() + offset;
             break;
         case SEEK_END:
             offset = pContext->rStream.TellEnd() + offset;
@@ -90,7 +93,7 @@ static toff_t tiff_seek(thandle_t handle, toff_t offset, int 
whence)
 
     pContext->rStream.Seek(offset);
 
-    return offset;
+    return offset - pContext->nStart;
 }
 
 static int tiff_close(thandle_t)
@@ -113,7 +116,7 @@ bool ImportTiffGraphicImport(SvStream& rTIFF, Graphic& 
rGraphic)
         TIFFSetWarningHandler(origWarningHandler);
     });
 
-    Context aContext(rTIFF, rTIFF.remainingSize());
+    Context aContext(rTIFF);
     TIFF* tif = TIFFClientOpen("libtiff-svstream", "r", &aContext,
                                tiff_read, tiff_write,
                                tiff_seek, tiff_close,

Reply via email to