mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 09:09:37 +02:00
50 lines
948 B
ObjectPascal
50 lines
948 B
ObjectPascal
program BUGGY;
|
|
|
|
{$MODE delphi}
|
|
|
|
type
|
|
TImageFormat = (ifIndex8, ifA8R8G8B8);
|
|
|
|
TImageData = packed record
|
|
Width: Integer;
|
|
Height: Integer;
|
|
Format: TImageFormat;
|
|
Size: Integer;
|
|
Bits: Pointer;
|
|
Palette: Pointer;
|
|
end;
|
|
|
|
TDynArray = array of TImageData;
|
|
|
|
procedure ModImage(var Img: TImageData);
|
|
begin
|
|
Img.Width := 128;
|
|
Img.Height := 128;
|
|
end;
|
|
|
|
procedure ArrayStuff(const Arr: TDynArray);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := 0 to High(Arr) do
|
|
ModImage(Arr[I]);
|
|
end;
|
|
|
|
var
|
|
MyArr: TDynArray;
|
|
begin
|
|
SetLength(MyArr, 5);
|
|
ArrayStuff(MyArr);
|
|
end.
|
|
|
|
{
|
|
bug-interror.pas(30,5) Fatal: Internal error 200106041
|
|
bug-interror.pas(30,5) Fatal: Compilation aborted
|
|
|
|
Error is caused by const parameter in procedure ArrayStuff(const Arr: TDynArray);
|
|
Doesn't occur when array is var parameter.
|
|
Only crashed in $MODE DELPHI.
|
|
Delphi lets you change elements of array even though
|
|
array is passed as const parameter.
|
|
}
|