[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