Browse Source

* Fix memleak

Michaël Van Canneyt 10 months ago
parent
commit
368a77d75e
1 changed files with 7 additions and 5 deletions
  1. 7 5
      packages/wasm-job/src/job.js.pas

+ 7 - 5
packages/wasm-job/src/job.js.pas

@@ -169,7 +169,7 @@ type
     function GetString: UnicodeString;
     function GetObject(aResultClass: TJSObjectClass): TJSObject;
     function GetValue: TJOB_JSValue;
-    function GetVariant: Variant;
+    function GetVariant(OwnsObject : Boolean = False): Variant;
     function GetLongInt: longint;
     function GetMaxInt: int64;
     function GetArray : TJSArray;
@@ -1618,9 +1618,11 @@ end;
 function JOBCallTJSPromiseResolver(const aMethod: TMethod; var H: TJOBCallbackHelper): PByte;
 var
   aValue: Variant;
+  aRes : Variant;
 begin
-  aValue:=H.GetVariant;
-  Result:=H.AllocVariant(TJSPromiseResolver(aMethod)(aValue));
+  aValue:=H.GetVariant(True);
+  aRes:=TJSPromiseResolver(aMethod)(aValue);
+  Result:=H.AllocVariant(aRes);
 end;
 
 function JOBCallTJSPromiseFinallyHandler(const aMethod: TMethod; var H: TJOBCallbackHelper): PByte;
@@ -3299,7 +3301,7 @@ begin
   inc(Index);
 end;
 
-function TJOBCallbackHelper.GetVariant: Variant;
+function TJOBCallbackHelper.GetVariant(OwnsObject : Boolean = False): Variant;
 var
   ObjId, Len: LongWord;
   Obj: TJSObject;
@@ -3357,7 +3359,7 @@ begin
       ObjId:=PLongWord(p)^;
       inc(p,4);
       Obj:=TJSObject.JOBCreateFromID(ObjId);
-      Obj.JOBObjectIDOwner:=false;
+      Obj.JOBObjectIDOwner:=OwnsObject;
       Result:=Obj as IJSObject;
     end;
   else