|
@@ -193,6 +193,11 @@ procedure fpc_dynarray_setlength(var p : pointer;pti : pointer;
|
|
|
exit;
|
|
|
getmem(newp,size);
|
|
|
fillchar(newp^,size,0);
|
|
|
+{$ifdef FPC_HAS_MANAGEMENT_OPERATORS}
|
|
|
+ { call int_InitializeArray for management operators }
|
|
|
+ if assigned(eletypemngd) and (PByte(eletype)^ in [tkRecord, tkObject]) then
|
|
|
+ int_InitializeArray(pointer(newp)+sizeof(tdynarray), eletype, dims[0]);
|
|
|
+{$endif FPC_HAS_MANAGEMENT_OPERATORS}
|
|
|
updatep := true;
|
|
|
end
|
|
|
else
|
|
@@ -265,6 +270,12 @@ procedure fpc_dynarray_setlength(var p : pointer;pti : pointer;
|
|
|
reallocmem(realp,size);
|
|
|
fillchar((pointer(realp)+sizeof(tdynarray)+elesize*(realp^.high+1))^,
|
|
|
(dims[0]-realp^.high-1)*elesize,0);
|
|
|
+{$ifdef FPC_HAS_MANAGEMENT_OPERATORS}
|
|
|
+ { call int_InitializeArray for management operators }
|
|
|
+ if assigned(eletypemngd) and (PByte(eletype)^ in [tkRecord, tkObject]) then
|
|
|
+ int_InitializeArray(pointer(realp)+sizeof(tdynarray)+elesize*(realp^.high+1),
|
|
|
+ eletype, dims[0]-realp^.high-1);
|
|
|
+{$endif FPC_HAS_MANAGEMENT_OPERATORS}
|
|
|
end;
|
|
|
newp := realp;
|
|
|
updatep := true;
|