From 4f27e889dbdefa3b55d89f8b0cf319419eae41bd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 13 Mar 2023 13:28:36 -0700 Subject: [Wasm GC] Properly handle packed field truncation in StructNew (#5570) --- src/wasm-interpreter.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 8e82bdf80..afc193f71 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -1541,14 +1541,15 @@ public: const auto& fields = heapType.getStruct().fields; Literals data(fields.size()); for (Index i = 0; i < fields.size(); i++) { + auto& field = fields[i]; if (curr->isWithDefault()) { - data[i] = Literal::makeZero(fields[i].type); + data[i] = Literal::makeZero(field.type); } else { auto value = self()->visit(curr->operands[i]); if (value.breaking()) { return value; } - data[i] = value.getSingleValue(); + data[i] = truncateForPacking(value.getSingleValue(), field); } } return Literal(std::make_shared(curr->type.getHeapType(), data), -- cgit v1.2.3