diff --git a/Source/uPSRuntime.pas b/Source/uPSRuntime.pas index d22c6182..c82a96b0 100644 --- a/Source/uPSRuntime.pas +++ b/Source/uPSRuntime.pas @@ -11259,7 +11259,7 @@ function CastProc(Caller: TPSExec; p: TPSExternalProcRec; Global, Stack: TPSStac if (IUnknown(invar.Dta^) = nil) or (IUnknown(invar.Dta^).QueryInterface(TPSTypeRec_Interface(ResVar.aType).Guid, IUnknown(resvar.Dta^)) <> 0) then begin Caller.CMD_Err2(erCustomError, tbtString(RPS_CannotCastInterface)); - Result := False; + Result := True; // error already dispatched by CMD_Err2 exit; end; {$IFDEF Delphi3UP} @@ -11273,7 +11273,7 @@ function CastProc(Caller: TPSExec; p: TPSExternalProcRec; Global, Stack: TPSStac if (TObject(invar.Dta^)= nil) or (not TObject(invar.dta^).GetInterface(TPSTypeRec_Interface(ResVar.aType).Guid, IUnknown(resvar.Dta^))) then begin Caller.CMD_Err2(erCustomError, tbtString(RPS_CannotCastInterface)); - Result := False; + Result := True; // error already dispatched by CMD_Err2 exit; end; {$ENDIF} @@ -11303,8 +11303,8 @@ function CastProc(Caller: TPSExec; p: TPSExternalProcRec; Global, Stack: TPSStac try TObject(ResVar.Dta^) := TObject(InVar.Dta^) as FSelf; except - Result := False; Caller.CMD_Err2(erCustomError, tbtString(RPS_CannotCastObject)); + Result := True; // error already dispatched by CMD_Err2 exit; end; end else