diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-10-28 16:09:18 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-10-29 11:00:33 +0100 |
commit | 540cd706db44858247cf69f1f40808f02bd78587 (patch) | |
tree | 9a471e9aaad75e82f92bcc8e955426a3a40f9cab | |
parent | 82cd9f8efd8cc8fd8e5bafbdaf39c94efda6a030 (diff) |
ofz#3872 Divide-by-zero
Change-Id: I851fdb905e0ca981cba6699fcbe20c5d8fabf7ae
Reviewed-on: https://gerrit.libreoffice.org/44009
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | filter/source/graphicfilter/icgm/class4.cxx | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/filter/source/graphicfilter/icgm/class4.cxx b/filter/source/graphicfilter/icgm/class4.cxx index b079403e691b..8bcb4b3f703a 100644 --- a/filter/source/graphicfilter/icgm/class4.cxx +++ b/filter/source/graphicfilter/icgm/class4.cxx @@ -547,7 +547,7 @@ void CGM::ImplDoClass4() case 0x10 : /*Circular Arc Centre Close*/ { - double fOrientation, fStartAngle, fEndAngle, vector[ 4 ]; + double fOrientation, vector[ 4 ]; FloatPoint aCenter, aRadius; if ( mbFigure ) @@ -565,8 +565,10 @@ void CGM::ImplDoClass4() } ImplMapDouble( aRadius.X ); aRadius.Y = aRadius.X; - fStartAngle = acos( vector[ 0 ] / sqrt( vector[ 0 ] * vector[ 0 ] + vector[ 1 ] * vector[ 1 ] ) ) * 57.29577951308; - fEndAngle = acos( vector[ 2 ] / sqrt( vector[ 2 ] * vector[ 2 ] + vector[ 3 ] * vector[ 3 ] ) ) * 57.29577951308; + const double fStartSqrt = sqrt(vector[0] * vector[0] + vector[1] * vector[1]); + double fStartAngle = fStartSqrt ? (acos(vector[0] / fStartSqrt) * 57.29577951308) : 0.0; + const double fEndSqrt = sqrt(vector[2] * vector[2] + vector[3] * vector[3]); + double fEndAngle = fEndSqrt ? acos(vector[2] / fEndSqrt) * 57.29577951308 : 0.0; if ( vector[ 1 ] > 0 ) fStartAngle = 360 - fStartAngle; |