[fpc-devel]Bug: using @ with procedures in FPC
Peter Vreman
pfv at cooldown.demon.nl
Fri Jun 8 09:33:00 CEST 2001
> Hello!
> Look at program:
> ==============================================================
> {$T+}
> program hello2;
> type TP = procedure;
> type PP = ^TP;
> var
> p1: TP;
> p2: PP;
>
> procedure A;
> begin
> writeln('Hello world');
> end;
>
> begin
> p1:=a;
> p2:=@p1;
> p2^();
> end.
> ==============================================================
>
> This program is work OK when compiled by FPC in -S2 mode (OBJFPC).
> But it is crashing if compiled by FPC in -Sd mode (Delphi).
> We have the same behavior when we compile with Kylix (DCC).
That is because the procedure variables are not cleanly implemented in Tp/Delphi,
sometimes you need the @ and even sometimes @@.
> I think there is a problem: compilers do not tell us any warning
> but generate a wrong code.
>
> If to replace
> p2:=@p1;
> with
> p2:=@@p1;
> then DCC compiled binary work OK. But FPC do not compile this.
That's then a bug in the delphi mode code. For FPC mode it is not allowed.
More information about the fpc-devel
mailing list