Peter Vreman wrote:
Hi,

The following compiles with fpc 2.0.1, but not anymore with fpc 2.1.1.

Is it a bug in my code (and fpc 2.0.1) or in fpc 2.1.1?

program Project1;

{$mode objfpc}{$H+}

procedure test(l: longint);
begin
end;

begin
  test(longint(''));
end.


You are dependning on the internal storage of constant strings. In 2.0.1
it is an ansistring because of the $H+, compiling with $H- gives an error.
Because an ansistring is 4 bytes in 32bit the explicit typeconversion to a
4 bytes longint will work in 32bit mode.

In 2.1.1 constant strings are array[0..x] of char. Where only a
longint('1234') can be converted.

Thanks. I suspected it had to do with this change. I just didn't know if it was a wanted or unwanted side effect of that change. I will fix my program.

Vincent.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to