summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-10-24 12:10:01 +0100
committerCaolán McNamara <caolanm@redhat.com>2017-10-24 18:13:03 +0200
commitc204b7de9d6eda4a005ccf0e007348e1ddad03be (patch)
treef53d33e9494474ef10a51d3770dc82d3b5507c81 /filter
parent429cd1b70b497a97496b24c0104a25565b0c00fe (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.cxx29
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);
}