Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2003-10

RE: No runtime range checking?

8 messages · 4 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Lee, John

Did you turn it on when you compiled... default is off. J

FPC doesn't even complain about range exceeded whether during compilation or runtime... isn't this an egregious violation of Pascal's strict typing philosophy? Does Turbo Pascal/Delphi behave this way as well?

This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.

LogicaCMG global sponsors, Gartner Symposium, Cannes, 4th -7th November 2003

http://symposium.gartner.com/story.php.id.3323.s.5.html

Please note that LogicaCMG does not have control over content from,or availability of, this website

Reply by email

Andy Sy
program blah;
type
   stringy = array[4..10] of char;
var
   C: stringy;
   D: array[2..5] of char;
procedure showstring(I:Integer);
begin
   Write(C[I]);
end;
begin
   C:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   D:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
   Writeln(D);
   showstring(-5);
end.

FPC doesn't even complain about range exceeded whether during compilation or runtime... isn't this an egregious violation of Pascal's strict typing philosophy? Does Turbo Pascal/Delphi behave this way as well?

Reply by email

Andy Sy
to Andy Sy
Andy Sy wrote 26 lines
program blah; type stringy = array[4..10] of char; var C: stringy; D: array[2..5] of char; procedure showstring(I:Integer); begin Write(C[I]); end; begin C:='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; D:='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; Writeln(D); showstring(-5); end. FPC doesn't even complain about range exceeded whether during compilation or runtime... isn't this an egregious violation of Pascal's strict typing philosophy? Does Turbo Pascal/Delphi behave this way as well?

Ah... turns out there's -Cr... I guess one can consider it a debug on/off option. Very nifty. Just perfect.

========================================= reply-to: a n d y @ n e t f x p h . c o m http://www.neotitans.com Web and Software Development

Reply by email

Lee, John

You might want to put -gl in there too, so if there is run time error it tells you where...J

FPC doesn't even complain about range exceeded whether during compilation or runtime... isn't this an egregious violation of Pascal's strict typing philosophy? Does Turbo Pascal/Delphi behave this way as well?

Or put -Cr in your fpc.cfg file

Reply by email

Michael Van Canneyt
to Andy Sy: program blah; type stringy = array[4..10] of char; var C: stringy; D: array[2..5] of char;
Andy Sy wrote 21 lines
program blah; type stringy = array[4..10] of char; var C: stringy; D: array[2..5] of char; procedure showstring(I:Integer); begin Write(C[I]); end; begin C:='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; D:='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; Writeln(D); showstring(-5); end.
FPC doesn't even complain about range exceeded whether during compilation or runtime...

It does:

malpertuus: ~ >ppc386 -Cr -gl testr.pp
malpertuus: ~ >./testr
ABCD
Runtime error 201 at 0x0040DC03
0x0040DC03 SHOWSTRING, line 12 of testr.pp
0x0040DCA9 main, line 19 of testr.pp
0x0040D365

isn't this an egregious violation of Pascal's strict typing philosophy? Does Turbo Pascal/Delphi behave this way as well?

Delphi doesn't compile your program:
malpertuus: ~ >dcc32 /CC -$$R+ -$$P+ -$$V+ testr.pp Borland Delphi Version 13.0 Copyright (c) 1983,99 Inprise Corporation E:\root\testr.pp(16) Error: Incompatible types: 'stringy' and 'String' E:\root\testr.pp(17) Error: Incompatible types: 'Array' and 'String' E:\root\testr.pp(20)

Michael.

Reply by email

Andy Sy
to Michael Van Canneyt: It does: malpertuus: ~ >ppc386 -Cr -gl testr.pp malpertuus: ~ >./testr ABCD Runtime error…
Michael Van Canneyt wrote 6 lines
Delphi doesn't compile your program: malpertuus: ~ >dcc32 /CC -$$R+ -$$P+ -$$V+ testr.pp Borland Delphi Version 13.0 Copyright (c) 1983,99 Inprise Corporation E:\root\testr.pp(16) Error: Incompatible types: 'stringy' and 'String' E:\root\testr.pp(17) Error: Incompatible types: 'Array' and 'String' E:\root\testr.pp(20)

I suppose this is because I'm assigning a larger string to an array[] of char that cannot hold it. Strange, even with runtime range checking on, fpc doesn't catch this problem. dcc apparently does as early as compile time... or am I missing something here?

Also, will the writing outside of array bounds in lines 16 and 17 corrupt memory even with runtime range checking on? With RRC off, I'm almost sure it will, correct?

Reply by email