Bladeren bron

fix wasm runtime.js storeString to support Unicode

Laytan Laats 1 jaar geleden
bovenliggende
commit
d2ca91b830
1 gewijzigde bestanden met toevoegingen van 5 en 2 verwijderingen
  1. 5 2
      vendor/wasm/js/runtime.js

+ 5 - 2
vendor/wasm/js/runtime.js

@@ -104,9 +104,12 @@ class WasmMemoryInterface {
 	storeInt(addr, value)  { this.mem.setInt32  (addr, value, true); }
 	storeUint(addr, value) { this.mem.setUint32 (addr, value, true); }
 
+	// Returned length might not be the same as `value.length` if non-ascii strings are given.
 	storeString(addr, value) {
-		const bytes = this.loadBytes(addr, value.length);
-		new TextEncoder().encodeInto(value, bytes);
+		const src = new TextEncoder().encode(value);
+		const dst = new Uint8Array(this.memory.buffer, addr, src.length);
+		dst.set(src);
+		return src.length;
 	}
 };