summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wasm-binary.h2
-rw-r--r--src/wasm/wasm-binary.cpp22
2 files changed, 8 insertions, 16 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index bbcfeda53..e85d67be2 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -1451,7 +1451,7 @@ public:
bool more() { return pos < input.size(); }
- std::pair<const char*, const char*> getByteView(size_t size);
+ std::string_view getByteView(size_t size);
uint8_t getInt8();
uint16_t getInt16();
uint32_t getInt32();
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index b9b8558bb..364942a56 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1736,17 +1736,16 @@ void WasmBinaryBuilder::readUserSection(size_t payloadLen) {
auto& section = wasm.userSections.back();
section.name = sectionName.str;
auto data = getByteView(payloadLen);
- section.data = {data.first, data.second};
+ section.data = {data.begin(), data.end()};
}
}
-std::pair<const char*, const char*>
-WasmBinaryBuilder::getByteView(size_t size) {
+std::string_view WasmBinaryBuilder::getByteView(size_t size) {
if (size > input.size() || pos > input.size() - size) {
throwError("unexpected end of input");
}
pos += size;
- return {input.data() + (pos - size), input.data() + pos};
+ return {input.data() + (pos - size), size};
}
uint8_t WasmBinaryBuilder::getInt8() {
@@ -2023,17 +2022,10 @@ Type WasmBinaryBuilder::getConcreteType() {
Name WasmBinaryBuilder::getInlineString() {
BYN_TRACE("<==\n");
auto len = getU32LEB();
-
auto data = getByteView(len);
- std::string str(data.first, data.second);
- if (str.find('\0') != std::string::npos) {
- throwError(
- "inline string contains NULL (0). that is technically valid in wasm, "
- "but you shouldn't do it, and it's not supported in binaryen");
- }
- BYN_TRACE("getInlineString: " << str << " ==>\n");
- return Name(str);
+ BYN_TRACE("getInlineString: " << data << " ==>\n");
+ return Name(data);
}
void WasmBinaryBuilder::verifyInt8(int8_t x) {
@@ -3129,7 +3121,7 @@ void WasmBinaryBuilder::readDataSegments() {
}
auto size = getU32LEB();
auto data = getByteView(size);
- curr->data = {data.first, data.second};
+ curr->data = {data.begin(), data.end()};
wasm.addDataSegment(std::move(curr));
}
}
@@ -3662,7 +3654,7 @@ void WasmBinaryBuilder::readDylink0(size_t payloadLen) {
pos = oldPos;
size_t remaining = (sectionPos + payloadLen) - pos;
auto tail = getByteView(remaining);
- wasm.dylinkSection->tail = {tail.first, tail.second};
+ wasm.dylinkSection->tail = {tail.begin(), tail.end()};
break;
}
if (pos != subsectionPos + subsectionSize) {