fpc/tests/webtbs/tw2421.pp
2003-03-17 13:39:52 +00:00

60 lines
1.0 KiB
ObjectPascal

{ Source provided for Free Pascal Bug Report 2421 }
{ Submitted by "N. Hug" on 2003-03-16 }
{ e-mail: hug__@t-online.de }
PROGRAM Bug;
{$ifdef fpc}{$MODE DELPHI}{$endif}
TYPE TTestEvent =PROCEDURE OF OBJECT;
TYPE TTest =CLASS
FOnTest :TTestEvent;
PROPERTY OnTest:TTestEvent READ FOnTest WRITE FOnTest;
END;
TYPE THost =CLASS
PRIVATE
FTest :TTest;
PROCEDURE DoTest;
PUBLIC
CONSTRUCTOR Create;
END;
PROCEDURE THost.DoTest;
BEGIN
// Accessing instance data results in a crash.
// It shows that SELF is not properly set.
IF FTest = NIL THEN begin
END;
END;
CONSTRUCTOR THost.Create;
BEGIN
INHERITED;
FTest := TTest.Create;
// Buggy code:
FTest.OnTest := DoTest;
// Non buggy alternatives:
// FTest.OnTest := SELF.DoTest;
// FTest.FOnTest := DoTest;
// Now call it.
FTest.OnTest;
END;
VAR M :THost;
BEGIN
M := THost.Create;
M.Free;
END.