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