aboutsummaryrefslogtreecommitdiff
path: root/misc/wasm
diff options
context:
space:
mode:
authorRichard Musiol <mail@richard-musiol.de>2019-04-25 10:55:49 +0200
committerBrad Fitzpatrick <bradfitz@golang.org>2019-04-29 17:33:47 +0000
commit9308637e3c2babcb3695d9f9673cf2a2b840362d (patch)
treee324188ea21c9b2734effe5bbe1393b902f6db36 /misc/wasm
parentcbf90b0028265a6195257e31a03aae42d402dd64 (diff)
downloadgo-9308637e3c2babcb3695d9f9673cf2a2b840362d.tar.gz
go-9308637e3c2babcb3695d9f9673cf2a2b840362d.zip
misc/wasm: fix command line arguments containing multi-byte characters
Command line arguments containing multi-byte characters were causing go_js_wasm_exec to crash (RangeError: Source is too large), because their byte length was not handled correctly. This change fixes the bug. Fixes #31645. Change-Id: I7860ebf5b12da37d9d0f43d4b6a22d326a90edaf Reviewed-on: https://go-review.googlesource.com/c/go/+/173877 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'misc/wasm')
-rw-r--r--misc/wasm/wasm_exec.js10
1 files changed, 7 insertions, 3 deletions
diff --git a/misc/wasm/wasm_exec.js b/misc/wasm/wasm_exec.js
index 29427d91e5..a1d88e6eac 100644
--- a/misc/wasm/wasm_exec.js
+++ b/misc/wasm/wasm_exec.js
@@ -415,9 +415,13 @@
let offset = 4096;
const strPtr = (str) => {
- let ptr = offset;
- new Uint8Array(mem.buffer, offset, str.length + 1).set(encoder.encode(str + "\0"));
- offset += str.length + (8 - (str.length % 8));
+ const ptr = offset;
+ const bytes = encoder.encode(str + "\0");
+ new Uint8Array(mem.buffer, offset, bytes.length).set(bytes);
+ offset += bytes.length;
+ if (offset % 8 !== 0) {
+ offset += 8 - (offset % 8);
+ }
return ptr;
};