aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-11-10 17:59:53 -0800
committerAlon Zakai <alonzakai@gmail.com>2011-11-10 17:59:53 -0800
commit65cdc27b1c839ae7fa5490669b02e378d2343985 (patch)
tree882bd965e3d3db0ea60224d3b7e8c5361768f154
parent0f6bc429372bf571e1b52a11dfedcd84ceba99cc (diff)
fix for i64 subtract in parsei64
-rw-r--r--src/parseTools.js11
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]--;
}
}
}