diff options
-rw-r--r-- | src/wasm-binary.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 10bd40ece..f86a19aa8 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -509,8 +509,13 @@ public: void writeDataSegments() { if (wasm->memory.segments.size() == 0) return; - o << int8_t(BinaryConsts::DataSegments) << LEB128(wasm->memory.segments.size()); + uint32_t num = 0; for (auto& segment : wasm->memory.segments) { + if (segment.size > 0) num++; + } + o << int8_t(BinaryConsts::DataSegments) << LEB128(num); + for (auto& segment : wasm->memory.segments) { + if (segment.size == 0) continue; o << int32_t(segment.offset); emitBuffer(segment.data, segment.size); o << int32_t(segment.size); |