summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/gdi/dibtools.cxx19
1 files changed, 13 insertions, 6 deletions
diff --git a/vcl/source/gdi/dibtools.cxx b/vcl/source/gdi/dibtools.cxx
index 4361f8b14053..a284d2022d24 100644
--- a/vcl/source/gdi/dibtools.cxx
+++ b/vcl/source/gdi/dibtools.cxx
@@ -1649,22 +1649,29 @@ bool ImplReadDIB(
bool bMSOFormat=false)
{
const SvStreamEndian nOldFormat(rIStm.GetEndian());
- const sal_uLong nOldPos(rIStm.Tell());
+ const auto nOldPos(rIStm.Tell());
sal_uLong nOffset(0);
bool bRet(false);
rIStm.SetEndian(SvStreamEndian::LITTLE);
- if(bFileHeader)
+ try
{
- if(ImplReadDIBFileHeader(rIStm, nOffset))
+ if(bFileHeader)
{
- bRet = ImplReadDIBBody(rIStm, rTarget, nOffset >= DIBV5HEADERSIZE ? pTargetAlpha : nullptr, nOffset, bIsMask, bMSOFormat);
+ if(ImplReadDIBFileHeader(rIStm, nOffset))
+ {
+ bRet = ImplReadDIBBody(rIStm, rTarget, nOffset >= DIBV5HEADERSIZE ? pTargetAlpha : nullptr, nOffset, bIsMask, bMSOFormat);
+ }
+ }
+ else
+ {
+ bRet = ImplReadDIBBody(rIStm, rTarget, nullptr, nOffset, bIsMask, bMSOFormat);
}
}
- else
+ catch (const SvStreamEOFException&)
{
- bRet = ImplReadDIBBody(rIStm, rTarget, nullptr, nOffset, bIsMask, bMSOFormat);
+ SAL_WARN("vcl", "EOF");
}
if(!bRet)