Browse Source

* TMethodImplementation.HandleCallback: fix building the argument array if the result is passed in a parameter

Sven/Sarah Barth 3 years ago
parent
commit
f9567ff50e
1 changed files with 2 additions and 1 deletions
  1. 2 1
      packages/rtl-objpas/src/inc/rtti.pp

+ 2 - 1
packages/rtl-objpas/src/inc/rtti.pp

@@ -3070,15 +3070,16 @@ begin
       Inc(i);
       Assert((i < Length(fArgs)) and (pfHigh in fArgs[i].ParamFlags), 'Expected high parameter after open array parameter');
       TValue.MakeOpenArray(aArgs[i - 1], SizeInt(aArgs[i]), fArgs[i].ParamType, args[argidx]);
+      Inc(argidx);
     end else if not (pfHidden in fArgs[i].ParamFlags) or (pfSelf in fArgs[i].ParamFlags) then begin
       if Assigned(fArgs[i].ParamType) then
         TValue.Make(aArgs[i], fArgs[i].ParamType, args[argidx])
       else
         TValue.Make(@aArgs[i], TypeInfo(Pointer), args[argidx]);
+      Inc(argidx);
     end;
 
     Inc(i);
-    Inc(argidx);
   end;
 
   if Assigned(fCallbackMethod) then