[fpc-pascal] Typecasting by accident
Vinzent Hoefler
JeLlyFish.software at gmx.net
Fri May 12 12:00:55 CEST 2006
Just found a bug of mine I was wondering about since about three days,
and wanted to share the fun with you:
-- 8< --
// "How to raise the wrong exception" or
// "Why automatic type conversion really sucks"
{$MODE OBJFPC}
program
Exception_Fun;
uses
SysUtils;
function Exception_Message : AnsiString;
begin
exit ('Will never show up, of course.');
end {Exception_Message};
type
Not_Now = class (SysUtils.Exception);
begin
try
raise Not_Now (Exception_Message);
except
on e : Not_Now do
WriteLn (StdErr, 'Caught it! Strange.');
end {try};
end {Exception_Fun}.
-- 8< --
No error, no warning, no note, no hint: Of course, a class type is just
a pointer, AnsiStrings can be pointers. Pointers can be converted to
any other pointer type... *crash*
More information about the fpc-pascal
mailing list