summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-06-01 12:34:17 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-06-01 12:34:17 -0700
commitee909d82d0e5f7f11d280df44b4c27f15eae0404 (patch)
tree7bc7b028a25adce6cf25eeb0f248f61200549379 /src
parentdb2ae40be2c52c0821da355285384aa0db8fc948 (diff)
parentf740552daa7c717f3cc0c3c266fa84549b0f203d (diff)
downloadbinaryen-ee909d82d0e5f7f11d280df44b4c27f15eae0404.tar.gz
binaryen-ee909d82d0e5f7f11d280df44b4c27f15eae0404.tar.bz2
binaryen-ee909d82d0e5f7f11d280df44b4c27f15eae0404.zip
Merge pull request #555 from WebAssembly/spec-test-fixes
Spec test fixes
Diffstat (limited to 'src')
-rw-r--r--src/wasm-s-parser.h5
-rw-r--r--src/wasm.cpp1
2 files changed, 3 insertions, 3 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index bb6fe3fd4..e6262c645 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -1107,10 +1107,9 @@ private:
if (s.dollared()) {
return s.str();
} else {
- size_t offset = atol(s.c_str());
- if (offset >= labelStack.size())
- return getPrefixedName("invalid");
// offset, break to nth outside label
+ uint64_t offset = std::stoll(s.c_str(), nullptr, 0);
+ if (offset >= labelStack.size()) throw ParseException("total memory must be <= 4GB", s.line, s.col);
return labelStack[labelStack.size() - 1 - offset];
}
}
diff --git a/src/wasm.cpp b/src/wasm.cpp
index d00ddd42f..48a0f276a 100644
--- a/src/wasm.cpp
+++ b/src/wasm.cpp
@@ -40,6 +40,7 @@ struct TypeSeeker : public PostWalker<TypeSeeker, Visitor<TypeSeeker>> {
for (auto name : curr->targets) {
if (name == targetName) types.push_back(curr->value ? curr->value->type : none);
}
+ if (curr->default_ == targetName) types.push_back(curr->value ? curr->value->type : none);
}
void visitBlock(Block* curr) {