]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Fix corner case in string to number conversion.
authorMike Pall <mike>
Sat, 27 Dec 2014 04:46:51 +0000 (05:46 +0100)
committerMike Pall <mike>
Sat, 27 Dec 2014 04:46:51 +0000 (05:46 +0100)
src/lj_strscan.c

index a21c414ab4a1362d6684da19fc0bcf3f8abea72a..0fddd43b5224d3bda255f985e51ebf040027fe0a 100644 (file)
@@ -289,14 +289,15 @@ static StrScanFmt strscan_dec(const uint8_t *p, TValue *o,
 
     /* Scale down until no more than 17 or 18 integer part digits remain. */
     while (idig > 9) {
-      uint32_t i, cy = 0;
+      uint32_t i = hi, cy = 0;
       ex2 += 6;
-      for (i = hi; i != lo; i = DNEXT(i)) {
+      do {
        cy += xi[i];
        xi[i] = (cy >> 6);
        cy = 100 * (cy & 0x3f);
        if (xi[i] == 0 && i == hi) hi = DNEXT(hi), idig--;
-      }
+       i = DNEXT(i);
+      } while (i != lo);
       while (cy) {
        if (hi == lo) { xi[DPREV(lo)] |= 1; break; }
        xi[lo] = (cy >> 6); lo = DNEXT(lo);