瀏覽代碼

* Do not TJSON.Stringify if message is already a string

Michael Van Canneyt 2 周之前
父節點
當前提交
3480dad504
共有 1 個文件被更改,包括 7 次插入3 次删除
  1. 7 3
      packages/wasm-utils/src/wasm.pas2js.messagechannelapi.pas

+ 7 - 3
packages/wasm-utils/src/wasm.pas2js.messagechannelapi.pas

@@ -171,15 +171,19 @@ var
   lMsgProc: TMsgProc absolute lMsgProcExp;
   lMsgProc: TMsgProc absolute lMsgProcExp;
   lMem : TWasmPointer;
   lMem : TWasmPointer;
   lLen : Longint;
   lLen : Longint;
+  sMsg : string absolute aMsg; // Avoid a typecast
   S : string;
   S : string;
 
 
 begin
 begin
   lMsgProcExp:=InstanceExports[MsgChannelFN_OnMessageUtf16];
   lMsgProcExp:=InstanceExports[MsgChannelFN_OnMessageUtf16];
   if not Assigned(lMsgProcExp) then
   if not Assigned(lMsgProcExp) then
     Exit;
     Exit;
-  S:=TJSJSON.stringify(aMsg);
-  lLen:=Length(S)*2;
-  lMem:=InstanceExports.AllocMem(lLen);
+  if isString(aMsg) then
+    s:=sMsg
+  else
+    S:=TJSJSON.stringify(aMsg);
+  lLen:=Length(S);
+  lMem:=InstanceExports.AllocMem(lLen*2);
   try
   try
     Env.SetUTF16StringInMem(lMem,S);
     Env.SetUTF16StringInMem(lMem,S);
     lMsgproc(aID,lMem,lLen);
     lMsgproc(aID,lMem,lLen);