projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix wide scanf's handling of input failure on %c, and simplify %[
[musl]
/
src
/
internal
/
floatscan.c
diff --git
a/src/internal/floatscan.c
b/src/internal/floatscan.c
index
10123bf
..
da209e2
100644
(file)
--- a/
src/internal/floatscan.c
+++ b/
src/internal/floatscan.c
@@
-81,8
+81,8
@@
static long double decfloat(FILE *f, int c, int bits, int emin, int sign, int po
if (lrp!=-1) break;
lrp = dc;
} else if (k < KMAX-2) {
if (lrp!=-1) break;
lrp = dc;
} else if (k < KMAX-2) {
- if (c!='0') lnz = dc;
dc++;
dc++;
+ if (c!='0') lnz = dc;
if (j) x[k] = x[k]*10 + c-'0';
else x[k] = c-'0';
if (++j==9) {
if (j) x[k] = x[k]*10 + c-'0';
else x[k] = c-'0';
if (++j==9) {
@@
-428,9
+428,10
@@
long double __floatscan(FILE *f, int c, int prec, int pok)
for (i=0; i<8 && (c|32)=="infinity"[i]; i++)
if (i<7) c = shgetc(f);
if (i==3 || i==8 || (i>3 && pok)) {
for (i=0; i<8 && (c|32)=="infinity"[i]; i++)
if (i<7) c = shgetc(f);
if (i==3 || i==8 || (i>3 && pok)) {
- if (i==3) shunget(f);
- if (pok) for (; i>3; i--) shunget(f);
- else shlim(f, 0);
+ if (i!=8) {
+ shunget(f);
+ if (pok) for (; i>3; i--) shunget(f);
+ }
return sign * INFINITY;
}
if (!i) for (i=0; i<3 && (c|32)=="nan"[i]; i++)
return sign * INFINITY;
}
if (!i) for (i=0; i<3 && (c|32)=="nan"[i]; i++)