diff options
author | Joseph Myers <josmyers@redhat.com> | 2024-08-14 17:15:46 +0000 |
---|---|---|
committer | Arjun Shankar <arjun@redhat.com> | 2024-09-27 17:25:43 +0200 |
commit | 293e4e3c90e390fa0b839c66f388a723ac6787e2 (patch) | |
tree | 8e159c34c77bd5dcc283b3722f3e1efb76b46e05 | |
parent | d8b4fc3653ca08912a6dec57a3ba36a2db779488 (diff) | |
download | glibc-293e4e3c90e390fa0b839c66f388a723ac6787e2.tar.gz glibc-293e4e3c90e390fa0b839c66f388a723ac6787e2.tar.xz glibc-293e4e3c90e390fa0b839c66f388a723ac6787e2.zip |
Test errno setting on strtod overflow in tst-strtod-round
We have no tests that errno is set to ERANGE on overflow of strtod-family functions (we do have some tests for underflow, in tst-strtod-underflow). Add such tests to tst-strtod-round. Tested for x86_64. (cherry picked from commit 207d64feb26279e152c50744e3c37e68491aca99)
-rw-r--r-- | stdlib/tst-strtod-round-skeleton.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c index 6fba4b5228..c3cc0201d4 100644 --- a/stdlib/tst-strtod-round-skeleton.c +++ b/stdlib/tst-strtod-round-skeleton.c @@ -21,6 +21,7 @@ declared in the headers. */ #define _LIBC_TEST 1 #define __STDC_WANT_IEC_60559_TYPES_EXT__ +#include <errno.h> #include <fenv.h> #include <float.h> #include <math.h> @@ -205,7 +206,9 @@ struct test { #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ { \ feclearexcept (FE_ALL_EXCEPT); \ + errno = 0; \ FTYPE f = STRTO (FSUF) (s, NULL); \ + int new_errno = errno; \ if (f != expected->FSUF \ || (copysign ## CSUF) (1.0 ## LSUF, f) \ != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \ @@ -254,6 +257,14 @@ struct test { printf ("ignoring this exception error\n"); \ } \ } \ + if (overflow->FSUF && new_errno != ERANGE) \ + { \ + printf (FNPFXS "to" #FSUF \ + " (" STRM ") left errno == %d," \ + " not %d (ERANGE)\n", \ + s, new_errno, ERANGE); \ + result = 1; \ + } \ } \ } |