summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-validator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-validator.cpp')
-rw-r--r--src/wasm/wasm-validator.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp
index ef70cc9e7..df88a5f32 100644
--- a/src/wasm/wasm-validator.cpp
+++ b/src/wasm/wasm-validator.cpp
@@ -926,16 +926,13 @@ static void validateExports(Module& module, ValidationInfo& info) {
for (auto& exp : module.exports) {
Name name = exp->value;
if (exp->kind == ExternalKind::Function) {
- bool found = false;
- for (auto& func : module.functions) {
- if (func->name == name) {
- found = true;
- break;
- }
- }
- info.shouldBeTrue(found, name, "module function exports must be found");
+ Import* imp;
+ info.shouldBeTrue(module.getFunctionOrNull(name) ||
+ ((imp = module.getImportOrNull(name)) && imp->kind == ExternalKind::Function), name, "module function exports must be found");
} else if (exp->kind == ExternalKind::Global) {
- info.shouldBeTrue(module.getGlobalOrNull(name), name, "module global exports must be found");
+ Import* imp;
+ info.shouldBeTrue(module.getGlobalOrNull(name) ||
+ ((imp = module.getImportOrNull(name)) && imp->kind == ExternalKind::Global), name, "module global exports must be found");
} else if (exp->kind == ExternalKind::Table) {
info.shouldBeTrue(name == Name("0") || name == module.table.name, name, "module table exports must be found");
} else if (exp->kind == ExternalKind::Memory) {