|
@@ -422,7 +422,7 @@ type
|
|
function TSystemFunctionCallback.Handler(aStack, aFP: Pointer): PtrUInt;
|
|
function TSystemFunctionCallback.Handler(aStack, aFP: Pointer): PtrUInt;
|
|
var
|
|
var
|
|
args: specialize TArray<Pointer>;
|
|
args: specialize TArray<Pointer>;
|
|
- i, len: SizeInt;
|
|
|
|
|
|
+ i, len, argidx: SizeInt;
|
|
val: PPtrUInt;
|
|
val: PPtrUInt;
|
|
resptr: Pointer;
|
|
resptr: Pointer;
|
|
begin
|
|
begin
|
|
@@ -430,6 +430,7 @@ begin
|
|
if fResultInParam then
|
|
if fResultInParam then
|
|
Dec(len);
|
|
Dec(len);
|
|
SetLength(args, len);
|
|
SetLength(args, len);
|
|
|
|
+ argidx := 0;
|
|
for i := 0 to High(fArgInfos) do begin
|
|
for i := 0 to High(fArgInfos) do begin
|
|
if i = fResultIdx then
|
|
if i = fResultIdx then
|
|
Continue;
|
|
Continue;
|
|
@@ -441,9 +442,10 @@ begin
|
|
val := @PPtrUInt(aFP)[fArgInfos[i].Offset];
|
|
val := @PPtrUInt(aFP)[fArgInfos[i].Offset];
|
|
end;
|
|
end;
|
|
if fArgInfos[i].Deref then
|
|
if fArgInfos[i].Deref then
|
|
- args[i] := PPtrUInt(val^)
|
|
|
|
|
|
+ args[argidx] := PPtrUInt(val^)
|
|
else
|
|
else
|
|
- args[i] := val;
|
|
|
|
|
|
+ args[argidx] := val;
|
|
|
|
+ Inc(argidx);
|
|
end;
|
|
end;
|
|
|
|
|
|
if fResultInParam then begin
|
|
if fResultInParam then begin
|