diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-10-24 12:10:01 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-10-24 18:13:03 +0200 |
commit | c204b7de9d6eda4a005ccf0e007348e1ddad03be (patch) | |
tree | f53d33e9494474ef10a51d3770dc82d3b5507c81 /filter | |
parent | 429cd1b70b497a97496b24c0104a25565b0c00fe (diff) |
ofz#3754 Divide-by-zero
Change-Id: I2e8504dd67d2a7ad1e83a95d7be5a1d1086de5d5
Reviewed-on: https://gerrit.libreoffice.org/43758
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/graphicfilter/idxf/dxf2mtf.cxx | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/filter/source/graphicfilter/idxf/dxf2mtf.cxx b/filter/source/graphicfilter/idxf/dxf2mtf.cxx index 692151d4012b..b06827c6d17e 100644 --- a/filter/source/graphicfilter/idxf/dxf2mtf.cxx +++ b/filter/source/graphicfilter/idxf/dxf2mtf.cxx @@ -761,7 +761,7 @@ DXF2GDIMetaFile::~DXF2GDIMetaFile() bool DXF2GDIMetaFile::Convert(const DXFRepresentation & rDXF, GDIMetaFile & rMTF, sal_uInt16 nminpercent, sal_uInt16 nmaxpercent) { - double fWidth,fHeight,fScale; + double fWidth,fHeight,fScale(0.0); DXFTransform aTransform; Size aPrefSize; const DXFLayer * pLayer; @@ -824,13 +824,12 @@ bool DXF2GDIMetaFile::Convert(const DXFRepresentation & rDXF, GDIMetaFile & rMTF fHeight=pDXF->aBoundingBox.fMaxY-pDXF->aBoundingBox.fMinY; if (fWidth<=0 || fHeight<=0) { bStatus=false; - fScale = 0; // -Wall added this... } else { - if (fWidth>fHeight) - fScale=10000.0/fWidth; - else - fScale=10000.0/fHeight; + if (fWidth>fHeight) + fScale=10000.0/fWidth; + else + fScale=10000.0/fHeight; aTransform=DXFTransform(fScale,-fScale,fScale, DXFVector(-pDXF->aBoundingBox.fMinX*fScale, pDXF->aBoundingBox.fMaxY*fScale, @@ -843,17 +842,21 @@ bool DXF2GDIMetaFile::Convert(const DXFRepresentation & rDXF, GDIMetaFile & rMTF else { fHeight=pVPort->fHeight; fWidth=fHeight*pVPort->fAspectRatio; + if (fWidth<=0 || fHeight<=0) { + bStatus=false; + } else { if (fWidth>fHeight) fScale=10000.0/fWidth; else fScale=10000.0/fHeight; - aTransform=DXFTransform( - DXFTransform(pVPort->aDirection,pVPort->aTarget), - DXFTransform( - DXFTransform(1.0,-1.0,1.0,DXFVector(fWidth/2-pVPort->fCenterX,fHeight/2+pVPort->fCenterY,0)), - DXFTransform(fScale,fScale,fScale,DXFVector(0,0,0)) - ) - ); + aTransform=DXFTransform( + DXFTransform(pVPort->aDirection,pVPort->aTarget), + DXFTransform( + DXFTransform(1.0,-1.0,1.0,DXFVector(fWidth/2-pVPort->fCenterX,fHeight/2+pVPort->fCenterY,0)), + DXFTransform(fScale,fScale,fScale,DXFVector(0,0,0)) + ) + ); + } aPrefSize.Width() =(long)(fWidth*fScale+1.5); aPrefSize.Height()=(long)(fHeight*fScale+1.5); } |