From 15141124f4462ec01e052f93aac2ae4c679b5c92 Mon Sep 17 00:00:00 2001 From: svenbarth <pascaldragon@googlemail.com> Date: Sat, 19 Sep 2020 13:54:25 +0000 Subject: [PATCH] * restore ability to cycle with 3.0.4 (at least until 3.2.2 is released) after r46890 git-svn-id: trunk@46895 - --- rtl/inc/compproc.inc | 4 ++-- rtl/inc/dynarr.inc | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/rtl/inc/compproc.inc b/rtl/inc/compproc.inc index 158d14f931..05a3507c26 100644 --- a/rtl/inc/compproc.inc +++ b/rtl/inc/compproc.inc @@ -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; diff --git a/rtl/inc/dynarr.inc b/rtl/inc/dynarr.inc index 436295c9d0..bb596e316c 100644 --- a/rtl/inc/dynarr.inc +++ b/rtl/inc/dynarr.inc @@ -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;