mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-07 06:53:33 +00:00
Fix strtod NaN handling / fix SIGSEGV in testlib/showerror (#901)
This commit is contained in:
parent
3ffc17c50e
commit
cc8c56e814
3 changed files with 19 additions and 4 deletions
|
@ -98,9 +98,9 @@ static void testlib_showerror_(int line, //
|
|||
}
|
||||
if (!isempty(fmt)) {
|
||||
if (_weaken(kvprintf)) {
|
||||
tinyprint(2, "\t");
|
||||
tinyprint(2, "\t", NULL);
|
||||
_weaken(kvprintf)(fmt, va);
|
||||
tinyprint(2, "\n");
|
||||
tinyprint(2, "\n", NULL);
|
||||
} else {
|
||||
tinyprint(2, "\t[missing kvprintf]\n");
|
||||
}
|
||||
|
|
|
@ -38,6 +38,17 @@ static const struct {
|
|||
uint64_t i;
|
||||
const char *s;
|
||||
} V[] = {
|
||||
{0x7FF8000000000000, "nan"}, //
|
||||
{0x7FF8000000000000, "NaN"}, //
|
||||
{0x7FF8000000000000, "NAn"}, //
|
||||
{0x7FF8000000000000, "nAN"}, //
|
||||
{0x7FF8000000000000, "NAN"}, //
|
||||
{0x7FF0000000000000, "INF"}, //
|
||||
{0x7FF0000000000000, "iNf"}, //
|
||||
{0x7FF8000000000000, "+NAN"}, //
|
||||
{0xFFF8000000000000, "-NAN"}, //
|
||||
{0x7FF0000000000000, "+INF"}, //
|
||||
{0xFFF0000000000000, "-INF"}, //
|
||||
{0x2fa7b6d71d20b96c, "4e-079"}, //
|
||||
{0x09eb8d7e32be6396, "7e-261"}, //
|
||||
{0x3ae7361cb863de62, "6e-025"}, //
|
||||
|
@ -85,6 +96,10 @@ static const struct {
|
|||
{0x7044d64d4079150c, "647e0230"}, //
|
||||
{0x64a7d93193f78fc6, "755e0174"}, //
|
||||
{0x30dcd5bee57763e6, "255e-075"}, //
|
||||
{0x7FF0000000000000, "INFINITY"}, //
|
||||
{0x7FF0000000000000, "iNfiNiTy"}, //
|
||||
{0x7FF0000000000000, "+INFINITY"}, //
|
||||
{0xFFF0000000000000, "-INFINITY"}, //
|
||||
{0x4c159bd3ad46e346, "3391e0055"}, //
|
||||
{0x3d923d1b5eb1d778, "4147e-015"}, //
|
||||
{0x3b482782afe1869e, "3996e-026"}, //
|
||||
|
|
4
third_party/gdtoa/strtod.c
vendored
4
third_party/gdtoa/strtod.c
vendored
|
@ -237,8 +237,8 @@ dig_done:
|
|||
word1(&rv) = bits[0];
|
||||
}
|
||||
else {
|
||||
word0(&rv) = NAN_WORD0;
|
||||
word1(&rv) = NAN_WORD1;
|
||||
word0(&rv) = 0x7ff80000;
|
||||
word1(&rv) = 0x0;
|
||||
}
|
||||
goto ret;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue