mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 08:07:56 +02:00
60 lines
1.0 KiB
ObjectPascal
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.
|