diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-11-10 17:59:53 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-11-10 17:59:53 -0800 |
commit | 65cdc27b1c839ae7fa5490669b02e378d2343985 (patch) | |
tree | 882bd965e3d3db0ea60224d3b7e8c5361768f154 | |
parent | 0f6bc429372bf571e1b52a11dfedcd84ceba99cc (diff) |
fix for i64 subtract in parsei64
-rw-r--r-- | src/parseTools.js | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/parseTools.js b/src/parseTools.js index fad414ed..da4c4352 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -592,10 +592,15 @@ function parseI64Constant(str) { for (var i = 0; i < v.length; i++) { v[i] -= w[i]; if (v[i] < 0) { - assert(i-1 >= 0); - assert(v[i-1] > 0); - v[i-1]--; v[i] += 10; + // find something to take from + var j = i-1; + while (v[j] == 0) { + v[j] = 9; + j--; + assert(j >= 0); + } + v[j]--; } } } |