On Thu, Jul 21, 2016 at 1:43 AM, Torbjörn Granlund <[email protected]> wrote:
> Austyn Krutsinger <[email protected]> writes: > > My initial though was to just skip the leading zero's in the mpz_set_str > function by something like this: > > while (isspace( (unsigned char) *sp) || (*sp == '0')) > sp++; > > Only problems is that this doesn't work for negative numbers that still > have a bunch of leading zeros; > > I think we should not accept strings like 00000-0000017. > Absolutely agree with you, kind of a silly proposal in retrospect. We can fix this in the mpn_set_str_other function by changing the comparison in line 1321. If we accept that w can be > or = to 0, then there is no issue if the number has leading zeros. So line 1321 in mpn_set_str_other becomes: 1321 for (rn = (w >= 0); j < sn;) 1322 { 1323 mp_limb_t cy; 1324 1325 w = sp[j++]; 1326 for (k = 1; k < info->exp; k++) 1327 w = w * b + sp[j++]; 1328 1329 cy = mpn_mul_1 (rp, rp, rn, info->bb); 1330 cy += mpn_add_1 (rp, rp, rn, w); 1331 if (cy > 0) 1332 rp[rn++] = cy; 1333 } 1334 assert (j == sn); 1321 for (rn = (w > 0); j < sn;) Regards, Austyn _______________________________________________ gmp-bugs mailing list [email protected] https://gmplib.org/mailman/listinfo/gmp-bugs
