[fpc-devel] Simple cast compiled as AS with -CR

Ondrej Pokorny lazarus at kluug.net
Fri Dec 30 10:45:53 CET 2016


Hello,

I have the following code

program FPCcast;

type
   TMyClass1 = class
   end;
   TMyClass2 = class(TMyClass1);

var
   O: TMyClass1;
begin
   O := TMyClass1.Create;
   TMyClass2(O).Free; // << 219-runtime error if compiled with -CR
end.

If I compile it with "-CR", I get a 219-runtime error when casting O to 
TMyClass2. Is this wanted/documented? I see that {$OBJECTCHECKS OFF} 
fixes it.

The documentation seems not to give any information about cast check:
http://www.freepascal.org/docs-html/3.0.0/prog/progsu57.html#x64-630001.2.57
http://www.freepascal.org/docs-html/3.0.0/user/userap1.html
"Verify object method call validity" is not exact description -> the 
Free method is available both in TMyClass1 and TMyClass2, so I don't 
expect a runtime error here.

Why I ask: this hack is used in the LCL to access protected methods - 
i.e. the LCL doesn't work correctly with -CR.

Ondrej




More information about the fpc-devel mailing list