[fpc-pascal]range-checking observations and questions
Andy Sy
andy at nospam.com
Fri Oct 3 00:19:13 CEST 2003
Apparently, activating -Cr is needed to enable enforcement of
compile time constant range checking as well.
The ff. program:
program blah;
var
E: array[2..4] of Integer;
begin
E[10]:=15;
end.
will compile albeit with a warning. Only when -Cr is enabled
will the range violation become an error. Is this kind of freedom
intentional and will it serve certain purposes?
For arrays of characters, the range checking is even looser.
I have noticed that the ff range violation:
program blah;
var
D: array[2..4] of char;
begin
D:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
Writeln(D);
end.
is completely ignored whether -Cr is enabled or not. No
error, no warning.
Question 1:
Will such code result in memory corruption somewhere in both the
cases where runtime range checking is enabled and the one where
it is not enabled?
Question 2:
Is this something that needs to be fixed or is there a
philosophy/explanation behind this behaviour?
Question 3:
Is this a special case for char arrays/strings only and will
never happen with other types?
Note: I am using FPC 1.0.10
More information about the fpc-pascal
mailing list