mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Add tests for sign of NaN returned by strtod (bug 23007).
This patch adds tests for bug 23007, strtod ignoring any sign in the input string in the case of a NaN result. Tested for x86_64. [BZ #23007] * stdlib/tst-strtod-nan-sign-main.c: New file. * stdlib/tst-strtod-nan-sign.c: Likewise. * wcsmbs/tst-wcstod-nan-sign.c: Likewise. * stdlib/Makefile (tests): Add tst-strtod-nan-sign. ($(objpfx)tst-strtod-nan-sign): Depend on $(libm). * wcsmbs/Makefile (tests) Add tst-wcstod-nan-sign. ($(objpfx)tst-wcstod-nan-sign): Depend on $(libm).
This commit is contained in:
parent
b0debe14fc
commit
b12c1e7991
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2018-06-15 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #23007]
|
||||
* stdlib/tst-strtod-nan-sign-main.c: New file.
|
||||
* stdlib/tst-strtod-nan-sign.c: Likewise.
|
||||
* wcsmbs/tst-wcstod-nan-sign.c: Likewise.
|
||||
* stdlib/Makefile (tests): Add tst-strtod-nan-sign.
|
||||
($(objpfx)tst-strtod-nan-sign): Depend on $(libm).
|
||||
* wcsmbs/Makefile (tests) Add tst-wcstod-nan-sign.
|
||||
($(objpfx)tst-wcstod-nan-sign): Depend on $(libm).
|
||||
|
||||
2018-06-15 Herman ten Brugge <hermantenbrugge@home.nl>
|
||||
|
||||
[BZ #23007]
|
||||
|
@ -84,7 +84,7 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
|
||||
tst-cxa_atexit tst-on_exit test-atexit-race \
|
||||
test-at_quick_exit-race test-cxa_atexit-race \
|
||||
test-on_exit-race test-dlclose-exit-race \
|
||||
tst-makecontext-align test-bz22786
|
||||
tst-makecontext-align test-bz22786 tst-strtod-nan-sign
|
||||
|
||||
tests-internal := tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
|
||||
tst-tls-atexit tst-tls-atexit-nodelete
|
||||
@ -221,6 +221,7 @@ $(objpfx)tst-tininess: $(libm)
|
||||
$(objpfx)tst-strtod-underflow: $(libm)
|
||||
$(objpfx)tst-strtod6: $(libm)
|
||||
$(objpfx)tst-strtod-nan-locale: $(libm)
|
||||
$(objpfx)tst-strtod-nan-sign: $(libm)
|
||||
|
||||
tst-tls-atexit-lib.so-no-z-defs = yes
|
||||
test-dlclose-exit-race-helper.so-no-z-defs = yes
|
||||
|
50
stdlib/tst-strtod-nan-sign-main.c
Normal file
50
stdlib/tst-strtod-nan-sign-main.c
Normal file
@ -0,0 +1,50 @@
|
||||
/* Test strtod functions handle signs of NaNs (bug 23007).
|
||||
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#include <stdlib/tst-strtod.h>
|
||||
#include <support/check.h>
|
||||
|
||||
#define CONCAT_(X, Y) X ## Y
|
||||
#define CONCAT(X, Y) CONCAT_ (X, Y)
|
||||
#define FNX(FN) CONCAT (FNPFX, FN)
|
||||
|
||||
#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
|
||||
static int \
|
||||
test_strto ## FSUF (void) \
|
||||
{ \
|
||||
FTYPE val_pos = FNX (FSUF) (L_("nan"), NULL); \
|
||||
FTYPE copy_pos = copysign ## CSUF (1, val_pos); \
|
||||
TEST_VERIFY (isnan (val_pos) && copy_pos == 1); \
|
||||
FTYPE val_neg = FNX (FSUF) (L_("-nan"), NULL); \
|
||||
FTYPE copy_neg = copysign ## CSUF (1, val_neg); \
|
||||
TEST_VERIFY (isnan (val_neg) && copy_neg == -1); \
|
||||
return 0; \
|
||||
}
|
||||
GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
return STRTOD_TEST_FOREACH (test_strto);
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
23
stdlib/tst-strtod-nan-sign.c
Normal file
23
stdlib/tst-strtod-nan-sign.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* Test strtod functions handle signs of NaNs (bug 23007).
|
||||
Narrow string version.
|
||||
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define FNPFX strto
|
||||
#define L_(C) C
|
||||
|
||||
#include <tst-strtod-nan-sign-main.c>
|
@ -51,7 +51,7 @@ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
|
||||
tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
|
||||
tst-c16c32-1 wcsatcliff tst-wcstol-locale tst-wcstod-nan-locale \
|
||||
tst-wcstod-round test-char-types tst-fgetwc-after-eof \
|
||||
$(addprefix test-,$(strop-tests))
|
||||
tst-wcstod-nan-sign $(addprefix test-,$(strop-tests))
|
||||
|
||||
include ../Rules
|
||||
|
||||
@ -105,3 +105,4 @@ CPPFLAGS += $(libio-mtsafe)
|
||||
CPPFLAGS-wcstold_l.c += -I../stdlib
|
||||
|
||||
$(objpfx)tst-wcstod-nan-locale: $(libm)
|
||||
$(objpfx)tst-wcstod-nan-sign: $(libm)
|
||||
|
23
wcsmbs/tst-wcstod-nan-sign.c
Normal file
23
wcsmbs/tst-wcstod-nan-sign.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* Test strtod functions handle signs of NaNs (bug 23007).
|
||||
Wide string version.
|
||||
Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define FNPFX wcsto
|
||||
#define L_(C) L ## C
|
||||
|
||||
#include "../stdlib/tst-strtod-nan-sign-main.c"
|
Loading…
Reference in New Issue
Block a user