@@ -10476,6 +10476,7 @@ function ClassCallProcMethod(Caller: TPSExec; p: TPSExternalProcRec; Global, Sta
10476
10476
CurrStack: Cardinal;
10477
10477
cc: TPSCallingConvention;
10478
10478
s: tbtString;
10479
+ dx: Integer;
10479
10480
begin
10480
10481
s := p.Decl;
10481
10482
if length(S) < 2 then
@@ -10499,16 +10500,21 @@ function ClassCallProcMethod(Caller: TPSExec; p: TPSExternalProcRec; Global, Sta
10499
10500
CurrStack := Cardinal(Stack.Count) - Cardinal(length(s)) -1 ;
10500
10501
if s[1 ] = #0 then inc(CurrStack);
10501
10502
MyList := TPSList.Create;
10502
- if p.Ext2 = nil then
10503
+ { $IFDEF CPUX64}
10504
+ if p.Ext2 = nil then begin
10503
10505
MyList.Add(NewPPSVariantIFC(n, False));
10506
+ FSelf := nil ;
10507
+ end ;
10508
+ { $ENDIF}
10509
+ dx := MyList.Count;
10504
10510
for i := 2 to length(s) do
10505
10511
begin
10506
10512
MyList.Add(nil );
10507
10513
end ;
10508
10514
for i := length(s) downto 2 do
10509
10515
begin
10510
10516
n := Stack[CurrStack];
10511
- MyList[i - 2 ] := NewPPSVariantIFC(n, s[i] <> #0 );
10517
+ MyList[i - 2 + dx ] := NewPPSVariantIFC(n, s[i] <> #0 );
10512
10518
inc(CurrStack);
10513
10519
end ;
10514
10520
if s[1 ] <> #0 then
@@ -10517,7 +10523,7 @@ function ClassCallProcMethod(Caller: TPSExec; p: TPSExternalProcRec; Global, Sta
10517
10523
end else v := nil ;
10518
10524
try
10519
10525
if p.Ext2 = nil then
10520
- Result := Caller.InnerfuseCall(nil , p.Ext1, cc, MyList, v)
10526
+ Result := Caller.InnerfuseCall(FSelf , p.Ext1, cc, MyList, v)
10521
10527
else
10522
10528
Result := Caller.InnerfuseCall(FSelf, VirtualMethodPtrToPtr(p.Ext1, FSelf), cc, MyList, v);
10523
10529
finally
@@ -11093,14 +11099,13 @@ function ClassCallProcPropertyHelper(Caller: TPSExec; p: TPSExternalProcRec; Glo
11093
11099
exit;
11094
11100
end ;
11095
11101
Params := TPSList.Create;
11096
- Params.Add(NewPPSVariantIFC(Stack[Longint(Stack.Count) - 2 ], False));
11097
11102
Params.Add(NewPPSVariantIFC(Stack[Longint(Stack.Count) - 1 ], True));
11098
11103
for i := Stack.Count -3 downto Longint(Stack.Count) - ParamCount -2 do
11099
11104
begin
11100
11105
Params.Add(NewPPSVariantIFC(Stack[I], False));
11101
11106
end ;
11102
11107
try
11103
- Result := Caller.InnerfuseCall(nil , p.Ext1, cdRegister, Params, nil );
11108
+ Result := Caller.InnerfuseCall(FSelf , p.Ext1, cdRegister, Params, nil );
11104
11109
finally
11105
11110
DisposePPSVariantIFCList(Params);
11106
11111
end ;
@@ -11120,15 +11125,14 @@ function ClassCallProcPropertyHelper(Caller: TPSExec; p: TPSExternalProcRec; Glo
11120
11125
exit;
11121
11126
end ;
11122
11127
Params := TPSList.Create;
11123
- Params.Add(NewPPSVariantIFC(Stack[Longint(Stack.Count) - 1 ], False));
11124
11128
Params.Add(NewPPSVariantIFC(Stack[Longint(Stack.Count) - ParamCount - 2 ], False));
11125
11129
11126
11130
for i := Stack.Count -2 downto Longint(Stack.Count) - ParamCount -1 do
11127
11131
begin
11128
11132
Params.Add(NewPPSVariantIFC(Stack[I], False));
11129
11133
end ;
11130
11134
try
11131
- Result := Caller.InnerfuseCall(nil , p.Ext2, cdregister, Params, nil );
11135
+ Result := Caller.InnerfuseCall(FSelf , p.Ext2, cdregister, Params, nil );
11132
11136
finally
11133
11137
DisposePPSVariantIFCList(Params);
11134
11138
end ;
0 commit comments