* restore ability to cycle with 3.0.4 (at least until 3.2.2 is released) after r46890

git-svn-id: trunk@46895 -
This commit is contained in:
svenbarth 2020-09-19 13:54:25 +00:00
parent b596b71130
commit 15141124f4
2 changed files with 12 additions and 4 deletions

View File

@ -67,10 +67,10 @@ Procedure fpc_shortstr_insert_char(source:Char;var s:shortstring;index:SizeInt);
{$endif VER3_0}
{$ifdef FPC_HAS_FEATURE_DYNARRAYS}
{$ifdef VER3_2}
{$if defined(VER3_0) or defined(VER3_2)}
function fpc_dynarray_copy(psrc : pointer;ti : pointer;
lowidx,count:tdynarrayindex) : fpc_stub_dynarray;compilerproc;
{$endif VER3_2}
{$endif VER3_0 or VER3_2}
function fpc_array_to_dynarray_copy(psrc : pointer;ti : pointer;
lowidx,count,maxcount:tdynarrayindex;
elesize : sizeint;

View File

@ -323,7 +323,7 @@ function int_array_to_dynarray_copy(psrc : pointer;ti : pointer;
) : fpc_stub_dynarray;[external name 'FPC_ARR_TO_DYNARR_COPY'];
{$ifdef VER3_2}
{$if defined(VER3_0) or defined(VER3_2)}
function fpc_dynarray_copy(psrc : pointer;ti : pointer;
lowidx,count:tdynarrayindex) : fpc_stub_dynarray;[Public,Alias:'FPC_DYNARR_COPY'];compilerproc;
var
@ -337,18 +337,26 @@ function fpc_dynarray_copy(psrc : pointer;ti : pointer;
realpsrc:=pdynarray(psrc-sizeof(tdynarray));
{$ifdef VER3_0}
tti:=aligntoptr(ti+2+PByte(ti)[1]);
{$else VER3_0}
tti:=aligntoqword(ti+2+PByte(ti)[1]);
{$endif VER3_0}
elesize:=pdynarraytypedata(tti)^.elSize;
{$ifdef VER3_0}
eletype:=pdynarraytypedata(tti)^.elType;
{$else VER3_0}
{ only set if type needs finalization }
if assigned(pdynarraytypedata(tti)^.elType) then
eletype:=pdynarraytypedata(tti)^.elType^
else
eletype:=nil;
{$endif VER3_0}
fpc_array_to_dynarray_copy(psrc,ti,lowidx,count,realpsrc^.high+1,elesize,eletype);
end;
{$endif VER3_2}
{$endif VER3_0 or VER3_2}
{ copy a custom array (open/dynamic/static) to dynamic array }
function fpc_array_to_dynarray_copy(psrc : pointer;ti : pointer;