diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-04-27 14:54:30 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-04-27 17:00:35 -0700 |
commit | f22e2796f5ac72c64c36cb562d1462093741f8d7 (patch) | |
tree | 9f33653987be8cb74be6783221e98340f95b27cc /src/wasm-binary.h | |
parent | 90bdf763537815a523d0dbe75a67e7f0b14b0d9e (diff) | |
download | binaryen-f22e2796f5ac72c64c36cb562d1462093741f8d7.tar.gz binaryen-f22e2796f5ac72c64c36cb562d1462093741f8d7.tar.bz2 binaryen-f22e2796f5ac72c64c36cb562d1462093741f8d7.zip |
just use a simple vector in data segments
Diffstat (limited to 'src/wasm-binary.h')
-rw-r--r-- | src/wasm-binary.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 9d4f567b0..91fe91b49 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -666,14 +666,14 @@ public: if (wasm->memory.segments.size() == 0) return; uint32_t num = 0; for (auto& segment : wasm->memory.segments) { - if (segment.size > 0) num++; + if (segment.data.size() > 0) num++; } auto start = startSection(BinaryConsts::Section::DataSegments); o << U32LEB(num); for (auto& segment : wasm->memory.segments) { - if (segment.size == 0) continue; + if (segment.data.size() == 0) continue; o << U32LEB(segment.offset); - writeInlineBuffer(segment.data, segment.size); + writeInlineBuffer(&segment.data[0], segment.data.size()); } finishSection(start); } @@ -1548,15 +1548,13 @@ public: auto num = getU32LEB(); for (size_t i = 0; i < num; i++) { Memory::Segment curr; - curr.offset = getU32LEB(); + auto offset = getU32LEB(); auto size = getU32LEB(); - auto buffer = (char*)malloc(size); + char buffer[size]; for (size_t j = 0; j < size; j++) { buffer[j] = char(getInt8()); } - curr.data = (const char*)buffer; - curr.size = size; - wasm.memory.segments.push_back(curr); + wasm.memory.segments.emplace_back(offset, (const char*)buffer, size); } } |