mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
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 207d64feb2
)
This commit is contained in:
parent
d8b4fc3653
commit
293e4e3c90
@ -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; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user