summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/source/zcodec/zcodec.cxx2
-rw-r--r--vcl/qa/cppunit/graphicfilter/data/bmp/fail/nodict-compress.bmpbin0 -> 110 bytes
-rw-r--r--vcl/source/gdi/dibtools.cxx5
3 files changed, 4 insertions, 3 deletions
diff --git a/tools/source/zcodec/zcodec.cxx b/tools/source/zcodec/zcodec.cxx
index fcf8c2126a6b..6be21d6fb6de 100644
--- a/tools/source/zcodec/zcodec.cxx
+++ b/tools/source/zcodec/zcodec.cxx
@@ -220,7 +220,7 @@ long ZCodec::Read( SvStream& rIStm, sal_uInt8* pData, sal_uIntPtr nSize )
}
err = mbStatus ? inflate(PZSTREAM, Z_NO_FLUSH) : Z_ERRNO;
- if ( err < 0 )
+ if (err < 0 || err == Z_NEED_DICT)
{
// Accept Z_BUF_ERROR as EAGAIN or EWOULDBLOCK.
mbStatus = (err == Z_BUF_ERROR);
diff --git a/vcl/qa/cppunit/graphicfilter/data/bmp/fail/nodict-compress.bmp b/vcl/qa/cppunit/graphicfilter/data/bmp/fail/nodict-compress.bmp
new file mode 100644
index 000000000000..a75d6ebae540
--- /dev/null
+++ b/vcl/qa/cppunit/graphicfilter/data/bmp/fail/nodict-compress.bmp
Binary files differ
diff --git a/vcl/source/gdi/dibtools.cxx b/vcl/source/gdi/dibtools.cxx
index f45fa3d206c8..c326632fe2a4 100644
--- a/vcl/source/gdi/dibtools.cxx
+++ b/vcl/source/gdi/dibtools.cxx
@@ -854,7 +854,8 @@ bool ImplReadDIBBody( SvStream& rIStm, Bitmap& rBmp, AlphaMask* pBmpAlpha, sal_u
// Seek behind the encoded block. There might have been bytes left or the codec might have read more than necessary.
rIStm.Seek(nCodedSize + nCodedPos);
}
- else
+
+ if (aData.empty())
{
// add something so we can take address of the first element
aData.resize(1);
@@ -863,7 +864,7 @@ bool ImplReadDIBBody( SvStream& rIStm, Bitmap& rBmp, AlphaMask* pBmpAlpha, sal_u
// set decoded bytes to memory stream,
// from which we will read the bitmap data
- pMemStm.reset( new SvMemoryStream);
+ pMemStm.reset(new SvMemoryStream);
pIStm = pMemStm.get();
assert(!aData.empty());
pMemStm->SetBuffer( &aData.front(), nUncodedSize, nUncodedSize );