diff options
Diffstat (limited to 'ports/webassembly/api.js')
| -rw-r--r-- | ports/webassembly/api.js | 16 |
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() { |
