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;