Peter Vreman wrote 19 lines
> 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.