summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wasm/wasm-binary.cpp3
-rw-r--r--src/wasm/wasm-validator.cpp8
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),