summaryrefslogtreecommitdiff
path: root/ports/webassembly/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'ports/webassembly/api.js')
-rw-r--r--ports/webassembly/api.js16
1 files changed, 12 insertions, 4 deletions
diff --git a/ports/webassembly/api.js b/ports/webassembly/api.js
index 2459075fc..2f2ad9522 100644
--- a/ports/webassembly/api.js
+++ b/ports/webassembly/api.js
@@ -127,23 +127,31 @@ export async function loadMicroPython(options) {
},
pyimport: pyimport,
runPython(code) {
+ const len = Module.lengthBytesUTF8(code);
+ const buf = Module._malloc(len + 1);
+ Module.stringToUTF8(code, buf, len + 1);
const value = Module._malloc(3 * 4);
Module.ccall(
"mp_js_do_exec",
"number",
- ["string", "pointer"],
- [code, value],
+ ["pointer", "number", "pointer"],
+ [buf, len, value],
);
+ Module._free(buf);
return proxy_convert_mp_to_js_obj_jsside_with_free(value);
},
runPythonAsync(code) {
+ const len = Module.lengthBytesUTF8(code);
+ const buf = Module._malloc(len + 1);
+ Module.stringToUTF8(code, buf, len + 1);
const value = Module._malloc(3 * 4);
Module.ccall(
"mp_js_do_exec_async",
"number",
- ["string", "pointer"],
- [code, value],
+ ["pointer", "number", "pointer"],
+ [buf, len, value],
);
+ Module._free(buf);
return proxy_convert_mp_to_js_obj_jsside_with_free(value);
},
replInit() {