diff --git a/demo/wasienv/dom/wadom_browser.pp b/demo/wasienv/dom/wadom_browser.pp index a364c5d..e57a4d4 100644 --- a/demo/wasienv/dom/wadom_browser.pp +++ b/demo/wasienv/dom/wadom_browser.pp @@ -1,7 +1,6 @@ unit wadom_browser; {$mode objfpc} -{$h+} interface @@ -30,7 +29,7 @@ Type function GetStringResult(ResultP: NativeInt): TWasiDomResult; virtual; function ReleaseStringResult: TWasiDomResult; virtual; function GetInvokeArguments(View: TJSDataView; ArgsP: NativeInt): TJSValueDynArray; virtual; - function GetWasiDomResult(const v: jsvalue): TWasiDomResult; + function GetWasiDomResult(v: jsvalue): TWasiDomResult; Public Constructor Create(aEnv: TPas2JSWASIEnvironment); override; Procedure FillImportObject(aObject: TJSObject); override; @@ -322,7 +321,7 @@ begin end; end; -function TWADomBridge.GetWasiDomResult(const v: jsvalue): TWasiDomResult; +function TWADomBridge.GetWasiDomResult(v: jsvalue): TWasiDomResult; begin case jstypeof(v) of 'undefined': Result:=WasiDomResult_Undefined; @@ -332,7 +331,7 @@ begin 'symbol': Result:=WasiDomResult_Symbol; 'bigint': Result:=WasiDomResult_BigInt; 'function': Result:=WasiDomResult_Function; - 'object': Result:=WasiDomResult_Object; + 'object': if v=nil then Result:=WasiDomResult_Null else Result:=WasiDomResult_Object; else Result:=WasiDomResult_None; end; end; diff --git a/demo/wasienv/dom/wadom_wasm.pas b/demo/wasienv/dom/wadom_wasm.pas index 75be06c..e4e8233 100644 --- a/demo/wasienv/dom/wadom_wasm.pas +++ b/demo/wasienv/dom/wadom_wasm.pas @@ -94,7 +94,7 @@ function __wasibridgefn_invoke_stringresult( FuncNameP: PChar; FuncNameLen: longint; ArgP: PByte; - ResultLenP: PNativeInt // length + ResultLenP: PByte // length ): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeStringResult; function __wasibridgefn_getstringresult( @@ -497,20 +497,9 @@ function TJSObject.InvokeJSUnicodeStringResult(const aName: string; var ResultLen: NativeInt; aError: TWasiDomResult; - InvokeArgs: PByte; begin ResultLen:=0; - if length(Args)=0 then - aError:=__wasibridgefn_invoke_stringresult(ObjectID,PChar(aName),length(aName),nil,@ResultLen) - else begin - InvokeArgs:=CreateInvokeJSArgs(Args); - try - aError:=__wasibridgefn_invoke_stringresult(ObjectID,PChar(aName),length(aName),InvokeArgs,@ResultLen); - finally - if InvokeArgs<>nil then - FreeMem(InvokeArgs); - end; - end; + aError:=InvokeJSOneResult(aName,Args,@__wasibridgefn_invoke_stringresult,@ResultLen); if aError<>WasiDomResult_String then WasiInvokeRaiseResultMismatch(aName,WasiDomResult_String,aError); if ResultLen=0 then @@ -524,7 +513,6 @@ begin __wasibridgefn_releasestringresult(); end; __wasibridgefn_getstringresult(PByte(Result)); - writeln('TJSObject.InvokeJSUnicodeStringResult Result="',Result,'"'); end; function TJSObject.InvokeJSObjResult(const aName: string;