瀏覽代碼

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

git-svn-id: trunk@46895 -
svenbarth 4 年之前
父節點
當前提交
15141124f4
共有 2 個文件被更改,包括 12 次插入4 次删除
  1. 2 2
      rtl/inc/compproc.inc
  2. 10 2
      rtl/inc/dynarr.inc

+ 2 - 2
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;

+ 10 - 2
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;