From 2f5962654cfc46093598257f98c18d2a61816b1f Mon Sep 17 00:00:00 2001 From: William Joye Date: Thu, 14 Sep 2017 11:20:33 -0400 Subject: prevent freeze when bad value sent to radToDeg or degToRad --- tksao/util/util.C | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tksao/util/util.C b/tksao/util/util.C index 800b9da..052aa27 100644 --- a/tksao/util/util.C +++ b/tksao/util/util.C @@ -115,6 +115,9 @@ char* toConstUpper(const char* str) double zeroTWOPI(double aa) { + if (isnan(aa) || isinf(aa) || (aa == -DBL_MAX) || (aa == DBL_MAX)) + return NAN; + double rr = aa; if (rr>0) while (rr>=M_TWOPI) @@ -127,6 +130,9 @@ double zeroTWOPI(double aa) double zero360(double aa) { + if (isnan(aa) || isinf(aa) || (aa == -DBL_MAX) || (aa == DBL_MAX)) + return NAN; + double rr = aa; if (rr>=0) while (rr>360) @@ -139,6 +145,9 @@ double zero360(double aa) double m180To180(double aa) { + if (isnan(aa) || isinf(aa) || (aa == -DBL_MAX) || (aa == DBL_MAX)) + return NAN; + // incoming 0-360 double rr = aa; if (rr>180) @@ -146,15 +155,21 @@ double m180To180(double aa) return rr; } -double degToRad(double dd) +double degToRad(double aa) { - double rr = M_PI*dd/180.; + if (isnan(aa) || isinf(aa) || (aa == -DBL_MAX) || (aa == DBL_MAX)) + return NAN; + + double rr = M_PI*aa/180.; return zeroTWOPI(rr); } -double radToDeg(double rr) +double radToDeg(double aa) { - double dd = 180.*rr/M_PI; + if (isnan(aa) || isinf(aa) || (aa == -DBL_MAX) || (aa == DBL_MAX)) + return NAN; + + double dd = 180.*aa/M_PI; return zero360(dd); } -- cgit v0.12