diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 3 | ||||
-rw-r--r-- | src/wasm/wasm-validator.cpp | 8 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index 54c904459..d023a56c6 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -3126,8 +3126,7 @@ void WasmBinaryBuilder::readDataSegments() { if (flags & BinaryConsts::HasIndex) { memIdx = getU32LEB(); } - auto* memory = getMemory(memIdx); - curr->memory = memory->name; + memoryRefs[memIdx].push_back(&curr->memory); if (!curr->isPassive) { curr->offset = readExpression(); } diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp index 44ecbe9c9..cb3841197 100644 --- a/src/wasm/wasm-validator.cpp +++ b/src/wasm/wasm-validator.cpp @@ -3208,9 +3208,11 @@ static void validateDataSegments(Module& module, ValidationInfo& info) { "passive segment should not have an offset"); } else { auto memory = module.getMemoryOrNull(segment->memory); - info.shouldBeTrue(memory != nullptr, - "segment", - "active segment must have a valid memory name"); + if (!info.shouldBeTrue(memory != nullptr, + "segment", + "active segment must have a valid memory name")) { + continue; + } if (memory->is64()) { if (!info.shouldBeEqual(segment->offset->type, Type(Type::i64), |