aboutsummaryrefslogtreecommitdiff
path: root/winsup/mingw
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/mingw')
-rw-r--r--winsup/mingw/ChangeLog6
-rw-r--r--winsup/mingw/mingwex/math/powl.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog
index ba08d33..f32087f 100644
--- a/winsup/mingw/ChangeLog
+++ b/winsup/mingw/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-01 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * mingwex/math/powl.c (powl): Return infinity if
+ extended precision multiplication of x by log2(y)
+ overflows.
+
2004-01-31 Danny Smith <dannysmith@users.sourceforge.net>
* mingwex/math/cephes_emath.h (__enan_64): Fix thinko.
diff --git a/winsup/mingw/mingwex/math/powl.c b/winsup/mingw/mingwex/math/powl.c
index 2a09ae1..19910bd 100644
--- a/winsup/mingw/mingwex/math/powl.c
+++ b/winsup/mingw/mingwex/math/powl.c
@@ -690,6 +690,14 @@ Fa = reducl(F);
Fb = F - Fa;
G = Fa + w * ya;
+if (isinf (G))
+ {
+ /* Bail out: G - reducl(G) will result in NAN
+ that will propagate through rest of calculations */
+ _SET_ERRNO (ERANGE);
+ mtherr( fname, OVERFLOW );
+ return( MAXNUML );
+ }
Ga = reducl(G);
Gb = G - Ga;