[fpc-pascal]compiler bug?

Peter Vreman peter at freepascal.org
Sun Jan 5 23:18:09 CET 2003


> Peter Vreman wrote:
>>
>> > The following program compiles but crashes with an integer range error
>> > when it gets to the comparison:
>> >
>> > {$R+}
>> > var
>> >   a : cardinal;
>> >   b : longint;
>> > begin
>> >   a := 0;
>> >   b := -1;
>> >   if a > b then writeln ('OK');
>> > end.
>> >
>> > Am I missing something, or is this a compiler bug?
>>
>> This is a bug. Added it as tb0447 to the testsuite.
>>
>> Workaround is to use int64(a) in the comparison
>
> OK, int64 works around that one....but what about this one, which
> crashes on the call to inc (I guess inc can't handle a 64 bit parameter):
>
> {$R+}
> var
>   a : ansistring;
>   b : cardinal;
> begin
>   a := 'hello';
>   b := -1;
>   inc (b, int64(length (a)));
> end.

the b:=-1 is not valid. The 1.1 compiler gives a correct error for it:

p.pp(7,8) Error: range check error while evaluating constants






More information about the fpc-pascal mailing list