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,