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 <caolanm@redhat.com>
diff --git a/vcl/source/filter/itiff/itiff.cxx b/vcl/source/filter/itiff/itiff.cxx
index a306317..5abd97e 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,