From a8d97d35e00fe178864e4282271e952addcdf1c3 Mon Sep 17 00:00:00 2001 From: Henrique Gottardi Werlang Date: Thu, 20 Mar 2025 17:58:43 -0300 Subject: [PATCH] Fix for the procedure signature to have an parent object and the parameters share the same parent value. --- packages/rtl/src/rtti.pas | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/rtl/src/rtti.pas b/packages/rtl/src/rtti.pas index d71ec53..ec38c47 100644 --- a/packages/rtl/src/rtti.pas +++ b/packages/rtl/src/rtti.pas @@ -243,7 +243,7 @@ type procedure LoadFlags; procedure LoadParameters; public - constructor Create(const Signature: TProcedureSignature); + constructor Create(const Parent: TRttiObject; const Signature: TProcedureSignature); class function Invoke(const Instance: TValue; const Args: array of TValue): TValue; @@ -2227,7 +2227,7 @@ end; function TRttiMethod.GetProcedureSignature: TRttiProcedureSignature; begin if not Assigned(FProcedureSignature) then - FProcedureSignature := TRttiProcedureSignature.Create(MethodTypeInfo.ProcSig); + FProcedureSignature := TRttiProcedureSignature.Create(Self, MethodTypeInfo.ProcSig); Result := FProcedureSignature; end; @@ -2872,9 +2872,9 @@ end; { TRttiProcedureSignature } -constructor TRttiProcedureSignature.Create(const Signature: TProcedureSignature); +constructor TRttiProcedureSignature.Create(const Parent: TRttiObject; const Signature: TProcedureSignature); begin - inherited Create(nil, Signature); + inherited Create(Parent, Signature); FReturnType := Pool.GetType(Signature.ResultType); @@ -2927,7 +2927,7 @@ begin for A := Low(FParameters) to High(FParameters) do begin Param := MethodParams[A]; - RttiParam := TRttiParameter.Create(Self, Param); + RttiParam := TRttiParameter.Create(Parent, Param); RttiParam.FName := Param.Name; RttiParam.FParamType := Pool.GetType(Param.TypeInfo);