[fpc-devel] Copy function and dynamic array

Sven Barth pascaldragon at googlemail.com
Wed Feb 29 14:05:38 CET 2012

Am 29.02.2012 13:54, schrieb ik:
> On Wed, Feb 29, 2012 at 14:44, LacaK<lacak at zoznam.sk>  wrote:
>> Hi *,
>> I found small incompatibility between Delphi and FPC.
>> This code:
>> var a,b: array of byte;
>> begin
>> 适适 setlength(a,2);
>> 适适 b:=copy(a,2,1); //<--HERE "Range check error" in FPC, Delphi returns
>> empty array
>> end;
>> Delphi documentation says:
>> "If Index is larger than the length of S, Copy returns an empty string or
>> array."
>> http://docwiki.embarcadero.com/VCL/en/System.Copy
>> Can it be fixed also in FPC?
> I think it's a Delphi bug to act like that. You must provide a length
> that is not bigger in size. It's up to you the developer.
> Otherwise you might have more then one type of buffer overflows in your code !
> The way Delphi solved it, is by taking the responsibility from the
> developer, and made the code a bit slower.
> And as I said, I don't think it's a good idea

It's not a bug in Delphi if they write it in the documentation. Whether 
we should copy this behavior is the question (maybe only in Delphi mode).


More information about the fpc-devel mailing list