Hi,

Apologies if this email has been sent to the wrong location (I'm a brand new user to the Lazarus emailing list).

I recently had a software/compilation bug whereby no exception was raised when my code was accessing an array outside of its range. Took some detective work, as it was resulting in corruption at runtime with completely unrelated code. This was caused by a bug in my own software that tried to access index 72 for an array of range [0..71]. What was more interesting was that if I expanded the array to 72 (or 73,74,75 for that matter) and then tried to access range+1 (IE index 73 for the array with an index of [0..72] this appeared to cause no ill effect to my program once more, so I was extremely "lucky" to have such an obvious bug appear in my code. Something more subtle would have been a lot more difficult to locate.

The offending code is as follows:

setlength(isMerged, ParityCol); // fixed length for array keeping track of merged cells. setlength(ColIndex, ParityCol); // Define the length of the Column Index
 For J := 0 to ParityCol do
   Begin
isMerged[J] := False; //This line was leading to the program becoming unresponsive in another totally unrelated part of code (AssignFile...) in another procedure ColIndex[J] := 1000; // This line, although also accessing outside of the legal range, did not appear to cause any problems!!!
   end;

Note I even tried the following line, which is obviously wrong (as the array has a maximum index of 71)

   ColIndex[175] := 500;

In other languages (that I am more familiar with) an exception (Error : Array index outside of range) would have been raised. Why does the Lazarus compiler not raise a similar error?

I am using:

Code Typhon Version 6.0
FPC Version 3.1.1
SVN Revision : 54036


Assuming this is an actual bug in the compiler, then I hope this information proves useful. If not, then please advise me accordingly, thanks.

Aside from this, let me say a very big thank you to you guys for all your hard work in what is a very useful piece of software for me (FPC). Your efforts are greatly appreciated.

Kind Regards,
Graham
New Zealand
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to