This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new d4b096f905 [Web] Fix string to uint8 array for special characters
(#17031)
d4b096f905 is described below
commit d4b096f905ad32be448c3a188ecf93a14c5734d5
Author: Charlie Ruan <[email protected]>
AuthorDate: Tue May 28 10:35:06 2024 -0700
[Web] Fix string to uint8 array for special characters (#17031)
---
web/src/memory.ts | 5 +++--
web/src/support.ts | 11 ++++++-----
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/web/src/memory.ts b/web/src/memory.ts
index dbbb449a0b..b0d4ff3bf1 100644
--- a/web/src/memory.ts
+++ b/web/src/memory.ts
@@ -375,8 +375,9 @@ export class CachedCallStack implements Disposable {
* @param data The string content.
*/
allocThenSetArgString(offset: PtrOffset, data: string): void {
- const strOffset = this.allocRawBytes(data.length + 1);
- this.storeRawBytes(strOffset, StringToUint8Array(data));
+ const dataUint8: Uint8Array = StringToUint8Array(data);
+ const strOffset = this.allocRawBytes(dataUint8.length);
+ this.storeRawBytes(strOffset, dataUint8);
this.addressToSetTargetValue.push([offset, strOffset]);
}
/**
diff --git a/web/src/support.ts b/web/src/support.ts
index 2fa87ed291..be85e85b7b 100644
--- a/web/src/support.ts
+++ b/web/src/support.ts
@@ -35,12 +35,13 @@ export function isPromise(value: any): boolean {
* @returns The corresponding Uint8Array.
*/
export function StringToUint8Array(str: string): Uint8Array {
- const arr = new Uint8Array(str.length + 1);
- for (let i = 0; i < str.length; ++i) {
- arr[i] = str.charCodeAt(i);
+ const arr: Uint8Array = new TextEncoder().encode(str);
+ const resArr = new Uint8Array(arr.length + 1);
+ for (let i = 0; i < arr.length; ++i) {
+ resArr[i] = arr[i];
}
- arr[str.length] = 0;
- return arr;
+ resArr[arr.length] = 0;
+ return resArr;
}
/**