emfio/source/reader/mtftools.cxx | 50 +++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 10 deletions(-)
New commits: commit 7f615923dd53143b0598627f534b7595d3f00dfd Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 4 09:42:15 2020 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Fri Dec 4 12:02:52 2020 +0100 ofz#28271 divide-by-zero Change-Id: Ib3f47dcb0a5e327f5385ccff328f410a15b2cc91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107190 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> 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 : _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
