diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-10-31 21:25:49 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-10-31 21:25:49 -0700 |
commit | 4536c4935aa936505c56d600c78e814a07393430 (patch) | |
tree | c47a0443e9b33cf4a009f71cfa1fb66f7297681a /src/wasm-js.cpp | |
parent | 0f0167441eee217e565400d2a4ac88ded545e464 (diff) | |
download | binaryen-4536c4935aa936505c56d600c78e814a07393430.tar.gz binaryen-4536c4935aa936505c56d600c78e814a07393430.tar.bz2 binaryen-4536c4935aa936505c56d600c78e814a07393430.zip |
better error on bad # of params
Diffstat (limited to 'src/wasm-js.cpp')
-rw-r--r-- | src/wasm-js.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp index 36ce6c4c7..2ee6e9683 100644 --- a/src/wasm-js.cpp +++ b/src/wasm-js.cpp @@ -167,8 +167,17 @@ extern "C" double EMSCRIPTEN_KEEPALIVE call_from_js(const char *target) { assert(instance->functions.find(name) != instance->functions.end()); Function *function = instance->functions[name]; size_t num = EM_ASM_INT_V({ return Module['tempArguments'].length }); - assert(num == function->params.size()); // TODO: fake missing/extra args? - + if (num != function->params.size()) { + std::cerr << "warning: bad # of arguments to " << target << ": got " << num << ", but expect " << function->params.size() << '\n'; + abort(); // TODO: fake missing/extra args? +#if 0 + if (num > function->params.size()) { + num = function->params.size(); // ignore the rest + } else { + .. fake missing .. + } +#endif + } ModuleInstance::LiteralList arguments; for (size_t i = 0; i < num; i++) { WasmType type = function->params[i].type; |