Skip to content

Commit 815c20c

Browse files
memcpy copy
1 parent 2212b70 commit 815c20c

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/em_js.extra.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,22 @@
44
//silver_chain_scope_end
55

66
EM_JS(long ,c2wasm_get_string_len, (c2wasm_js_var string_index), {
7-
return window.c2wasm_stack[string_index].length;
7+
let value = window.c2wasm_stack[string_index];
8+
let encoder = new TextEncoder();
9+
let utf8Array = encoder.encode(value);
10+
return utf8Array.length;
811
});
912

1013
EM_JS(void *,c2wasm_memcpy_string,(c2wasm_js_var stack_index,int start_string, char *dest, int size), {
1114
let value = window.c2wasm_stack[stack_index];
12-
for(let i = 0; i < size; i++){
13-
14-
let current_char = value.charCodeAt(i+start_string);
15-
if(isNaN(current_char)){
15+
let encoder = new TextEncoder();
16+
let utf8Array = encoder.encode(value);
17+
18+
for(let i = 0; i <= size; i++){
19+
if(i + start_string >= utf8Array.length){
1620
break;
1721
}
18-
wasmExports.c2wasm_set_char(dest,i,current_char);
22+
wasmExports.c2wasm_set_char(dest, i, utf8Array[i + start_string]);
1923
}
2024
return dest;
2125
});

0 commit comments

Comments
 (0)