From e3a200ad2e7e4f412e48744eff3955a3a32530da Mon Sep 17 00:00:00 2001 From: byronhe Date: Thu, 6 Aug 2020 02:17:07 +0800 Subject: [PATCH] fix icapp.c load from uint64 text file --- icapp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/icapp.c b/icapp.c index d20b775..04459c5 100644 --- a/icapp.c +++ b/icapp.c @@ -445,7 +445,11 @@ unsigned befgen(unsigned char **_in, unsigned n, int fmt, int isize, FILE *fi, i a: IPUSH(in,n,isize,nmax,u); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("\'%s\'->%llu ", p, u); *q = c; } else if(isize > 0) { while(!isdigit(*p) && *p != '-' && *p != '+') p++; - uint64_t u = strtoll(p, &q, 10)*pre - mdelta; + uint64_t u = strtoull(p, &q, 10); + if(decs){ + u *= pre; + } + u -= mdelta; if(*q == '.') u = pre>1.0?round(strtod(p, &q)*pre):strtod(p, &q) - mdelta; switch(isize) { @@ -453,7 +457,7 @@ unsigned befgen(unsigned char **_in, unsigned n, int fmt, int isize, FILE *fi, i case 2: if(u > 0xffffu) ovf++; break; case 4: if(u > 0xffffffffu) ovf++; break; } - IPUSH(in,n,isize,nmax,u); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("\'%s\'->%lld ", p, u); *q = c; + IPUSH(in,n,isize,nmax,u); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("\'%s\'->%llu ", p, u); *q = c; } else { while(*p && !isdigit(*p) && *p != '-' && *p != '.' && *p != '+') { if(keysep && strchr(keysep,*p)) keyid++; p++; } double d = strtod(p, &q) - mdelta;