* arraydef.elesize returns 4 when strings are found in an openarray,

arrayconstructor. Since only the pointers to the strings are stored
This commit is contained in:
peter 2000-04-01 14:17:08 +00:00
parent a69a6856be
commit 0fccba3864

View File

@ -1921,6 +1921,17 @@
function tarraydef.elesize : longint;
begin
if isconstructor or is_open_array(@self) then
begin
{ strings are stored by address only }
case elementtype.def^.deftype of
stringdef :
elesize:=4;
else
elesize:=elementtype.def^.size;
end;
end
else
elesize:=elementtype.def^.size;
end;
@ -1948,7 +1959,7 @@
function tarraydef.alignment : longint;
begin
{ alignment is the size of the elements }
alignment:=elementtype.def^.size;
alignment:=elesize;
end;
@ -1969,7 +1980,7 @@
rttilist^.concat(new(pai_const,init_8bit(tkarray)));
write_rtti_name;
{ size of elements }
rttilist^.concat(new(pai_const,init_32bit(elementtype.def^.size)));
rttilist^.concat(new(pai_const,init_32bit(elesize)));
{ count of elements }
rttilist^.concat(new(pai_const,init_32bit(highrange-lowrange+1)));
{ element type }
@ -3943,7 +3954,11 @@ Const local_symtable_index : longint = $8001;
{
$Log$
Revision 1.198 2000-04-01 11:44:56 peter
Revision 1.199 2000-04-01 14:17:08 peter
* arraydef.elesize returns 4 when strings are found in an openarray,
arrayconstructor. Since only the pointers to the strings are stored
Revision 1.198 2000/04/01 11:44:56 peter
* fixed rtti info for record
Revision 1.197 2000/03/01 12:35:45 pierre