projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
floatscan: fix incorrect count of leading nonzero digits
[musl]
/
src
/
internal
/
floatscan.c
diff --git
a/src/internal/floatscan.c
b/src/internal/floatscan.c
index
0e1f6d0
..
377a008
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) {
@@
-403,16
+403,16
@@
long double __floatscan(FILE *f, int c, int prec, int pok)
switch (prec) {
case 0:
switch (prec) {
case 0:
- bits =
24
;
- emin =
-149
;
+ bits =
FLT_MANT_DIG
;
+ emin =
FLT_MIN_EXP-bits
;
break;
case 1:
break;
case 1:
- bits =
53
;
- emin =
-1074
;
+ bits =
DBL_MANT_DIG
;
+ emin =
DBL_MIN_EXP-bits
;
break;
case 2:
bits = LDBL_MANT_DIG;
break;
case 2:
bits = LDBL_MANT_DIG;
- emin =
-16445
;
+ emin =
LDBL_MIN_EXP-bits
;
break;
default:
return 0;
break;
default:
return 0;