1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-08 17:42:12 +03:00

Fix parsing of 0e+0 as float

This commit is contained in:
Andreas Schwab
2013-10-31 12:51:03 +01:00
parent 28d708c44b
commit a4966c6104
4 changed files with 46 additions and 2 deletions

View File

@@ -109,6 +109,19 @@ struct test double_tests[] =
{ L("-inf"), L("%g"), 1 }
};
struct test2
{
const CHAR *str;
const CHAR *fmt;
int retval;
char residual;
} double_tests2[] =
{
{ L("0e+0"), L("%g%c"), 1, 0 },
{ L("0xe+0"), L("%g%c"), 2, '+' },
{ L("0x.e+0"), L("%g%c"), 2, '+' },
};
int
main (void)
{
@@ -196,5 +209,26 @@ main (void)
}
}
for (i = 0; i < sizeof (double_tests2) / sizeof (double_tests2[0]); ++i)
{
double dummy;
int ret;
char c = 0;
if ((ret = SSCANF (double_tests2[i].str, double_tests2[i].fmt,
&dummy, &c)) != double_tests2[i].retval)
{
printf ("double_tests2[%d] returned %d != %d\n",
i, ret, double_tests2[i].retval);
result = 1;
}
else if (ret == 2 && c != double_tests2[i].residual)
{
printf ("double_tests2[%d] stopped at '%c' != '%c'\n",
i, c, double_tests2[i].residual);
result = 1;
}
}
return result;
}

View File

@@ -1966,6 +1966,8 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
if (width > 0)
--width;
}
else
got_digit = 1;
}
while (1)