From 784b811131ece8a2f7049a4e7096e0d024afb751 Mon Sep 17 00:00:00 2001 From: Ken Brown Date: Tue, 27 Oct 2020 09:52:48 -0400 Subject: [PATCH] Cygwin: fix return value of sqrtl on negative infinity The return value is now -NaN. This fixes a bug in the mingw-w64 code that was imported into Cygwin. The fix is consistent with Posix and Linux. It is also consistent with the current mingw-w64 code, with one exception: The mingw-w64 code sets errno to EDOM if the input is -NaN, but this appears to differ from Posix and Linux. Addresses: https://cygwin.com/pipermail/cygwin/2020-October/246606.html --- winsup/cygwin/math/sqrt.def.h | 5 ++++- winsup/cygwin/release/3.2.0 | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/math/sqrt.def.h b/winsup/cygwin/math/sqrt.def.h index cf8b5cbe6..3d1a00908 100644 --- a/winsup/cygwin/math/sqrt.def.h +++ b/winsup/cygwin/math/sqrt.def.h @@ -73,8 +73,11 @@ __FLT_ABI (sqrt) (__FLT_TYPE x) if (x_class == FP_ZERO) return __FLT_CST (-0.0); + if (x_class == FP_NAN) + return x; + errno = EDOM; - return x; + return -__FLT_NAN; } else if (x_class == FP_ZERO) return __FLT_CST (0.0); diff --git a/winsup/cygwin/release/3.2.0 b/winsup/cygwin/release/3.2.0 index 11de87dbc..22f78e7a7 100644 --- a/winsup/cygwin/release/3.2.0 +++ b/winsup/cygwin/release/3.2.0 @@ -37,5 +37,8 @@ Bug Fixes - Fix assertion failure on an invalid path under /proc//fd/. Addresses: https://cygwin.com/pipermail/cygwin/2020-September/246160.html -- Fix crash on stat(2)'ing /dev/ptmx on 32 bit +- Fix crash on stat(2)'ing /dev/ptmx on 32 bit. Addresses: https://cygwin.com/pipermail/cygwin/2020-September/246218.html + +- Fix return value of sqrtl on negative infinity. + Addresses: https://cygwin.com/pipermail/cygwin/2020-October/246606.html