[fpc-devel] fpc 2.0.1 and 2.1.1 behave differently

Vincent Snijders vsnijders at quicknet.nl
Wed Oct 5 10:59:48 CEST 2005


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.



More information about the fpc-devel mailing list