summaryrefslogtreecommitdiff
path: root/emfio
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-12-04 09:42:15 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-12-07 09:41:06 +0100
commit943dce614a796801e84b83e3cacc17e5432e8aa4 (patch)
tree71dee0b7f54265f6cfb931c87d18ea0b7f87df65 /emfio
parenteafbf15d68afee5b57e0f1c87f73762ac057a12f (diff)
ofz#28271 divide-by-zero
Change-Id: Ib3f47dcb0a5e327f5385ccff328f410a15b2cc91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107202 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'emfio')
-rw-r--r--emfio/source/reader/mtftools.cxx50
1 files changed, 40 insertions, 10 deletions
diff --git a/emfio/source/reader/mtftools.cxx b/emfio/source/reader/mtftools.cxx
index 9ad212b17dfa..778adeb429ba 100644
--- a/emfio/source/reader/mtftools.cxx
+++ b/emfio/source/reader/mtftools.cxx
@@ -322,8 +322,14 @@ namespace emfio
fY2 = mnWinOrgY-fY2;
fX2 *= HUNDREDTH_MILLIMETERS_PER_MILLIINCH * 10;
fY2 *= HUNDREDTH_MILLIMETERS_PER_MILLIINCH * 10;
- fX2 += mnDevOrgX * static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
- fY2 += mnDevOrgY * static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ double nDevOrgX = mnDevOrgX;
+ if (mnPixX)
+ nDevOrgX *= static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
+ fX2 += nDevOrgX;
+ double nDevOrgY = mnDevOrgY;
+ if (mnPixY)
+ nDevOrgY *= static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ fY2 += nDevOrgY;
}
break;
case MM_HIENGLISH :
@@ -332,8 +338,14 @@ namespace emfio
fY2 = mnWinOrgY-fY2;
fX2 *= HUNDREDTH_MILLIMETERS_PER_MILLIINCH;
fY2 *= HUNDREDTH_MILLIMETERS_PER_MILLIINCH;
- fX2 += mnDevOrgX * static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
- fY2 += mnDevOrgY * static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ double nDevOrgX = mnDevOrgX;
+ if (mnPixX)
+ nDevOrgX *= static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
+ fX2 += nDevOrgX;
+ double nDevOrgY = mnDevOrgY;
+ if (mnPixY)
+ nDevOrgY *= static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ fY2 += nDevOrgY;
}
break;
case MM_TWIPS:
@@ -342,8 +354,14 @@ namespace emfio
fY2 = mnWinOrgY-fY2;
fX2 *= HUNDREDTH_MILLIMETERS_PER_MILLIINCH / MILLIINCH_PER_TWIPS;
fY2 *= HUNDREDTH_MILLIMETERS_PER_MILLIINCH / MILLIINCH_PER_TWIPS;
- fX2 += mnDevOrgX * static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
- fY2 += mnDevOrgY * static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ double nDevOrgX = mnDevOrgX;
+ if (mnPixX)
+ nDevOrgX *= static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
+ fX2 += nDevOrgX;
+ double nDevOrgY = mnDevOrgY;
+ if (mnPixY)
+ nDevOrgY *= static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ fY2 += nDevOrgY;
}
break;
case MM_LOMETRIC :
@@ -352,16 +370,28 @@ namespace emfio
fY2 = mnWinOrgY-fY2;
fX2 *= 10;
fY2 *= 10;
- fX2 += mnDevOrgX * static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
- fY2 += mnDevOrgY * static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ double nDevOrgX = mnDevOrgX;
+ if (mnPixX)
+ nDevOrgX *= static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
+ fX2 += nDevOrgX;
+ double nDevOrgY = mnDevOrgY;
+ if (mnPixY)
+ nDevOrgY *= static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ fY2 += nDevOrgY;
}
break;
case MM_HIMETRIC : // in hundredth of a millimeter
{
fX2 -= mnWinOrgX;
fY2 = mnWinOrgY-fY2;
- fX2 += mnDevOrgX * static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
- fY2 += mnDevOrgY * static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ double nDevOrgX = mnDevOrgX;
+ if (mnPixX)
+ nDevOrgX *= static_cast<double>(mnMillX) * 100.0 / static_cast<double>(mnPixX);
+ fX2 += nDevOrgX;
+ double nDevOrgY = mnDevOrgY;
+ if (mnPixY)
+ nDevOrgY *= static_cast<double>(mnMillY) * 100.0 / static_cast<double>(mnPixY);
+ fY2 += nDevOrgY;
}
break;
default :