X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Finternal%2Ffloatscan.c;h=278bf25025d64e1b6375e1b2a57ab5e2b3306246;hb=1bbe166e15e2c005c49c0aa53b8d106315d95ad0;hp=eef70df9d6bc03ac463ae8eaa6419c9b8577e78f;hpb=f3f29795da461905a5e9f0314dc0d7840bd75c3f;p=musl diff --git a/src/internal/floatscan.c b/src/internal/floatscan.c index eef70df9..278bf250 100644 --- a/src/internal/floatscan.c +++ b/src/internal/floatscan.c @@ -110,7 +110,10 @@ static long double decfloat(FILE *f, int c, int bits, int emin, int sign, int po gotdig=1; } else { dc++; - if (c!='0') x[KMAX-4] |= 1; + if (c!='0') { + lnz = (KMAX-4)*9; + x[KMAX-4] |= 1; + } } } if (!gotrad) lrp=dc; @@ -172,6 +175,9 @@ static long double decfloat(FILE *f, int c, int bits, int emin, int sign, int po return sign * (long double)x[0] * p10s[rp-10]; } + /* Drop trailing zeros */ + for (; !x[z-1]; z--); + /* Align radix point to B1B digit boundary */ if (rp % 9) { int rpm9 = rp>=0 ? rp%9 : rp%9+9;