|
@@ -1610,6 +1610,7 @@ implementation
|
|
|
sym: tfieldvarsym;
|
|
|
begin
|
|
|
result:=false;
|
|
|
+ def:=generrordef;
|
|
|
{ If a record contains a union, it does not contain a "single
|
|
|
non-composite field" in the context of certain ABIs requiring
|
|
|
special treatment for such records }
|
|
@@ -1619,8 +1620,8 @@ implementation
|
|
|
{ a record/object can contain other things than fields }
|
|
|
currentsymlist:=symlist;
|
|
|
{ recurse in arrays and records }
|
|
|
- sym:=nil;
|
|
|
repeat
|
|
|
+ sym:=nil;
|
|
|
{ record has one field? }
|
|
|
for i:=0 to currentsymlist.Count-1 do
|
|
|
begin
|
|
@@ -1652,7 +1653,12 @@ implementation
|
|
|
end;
|
|
|
{ if the array element is again a record, continue descending }
|
|
|
if currentdef.typ=recorddef then
|
|
|
- currentsymlist:=trecorddef(currentdef).symtable.SymList
|
|
|
+ begin
|
|
|
+ { the record might be empty, so reset the result until we've
|
|
|
+ really found something }
|
|
|
+ result:=false;
|
|
|
+ currentsymlist:=trecorddef(currentdef).symtable.SymList
|
|
|
+ end
|
|
|
else
|
|
|
begin
|
|
|
{ otherwise we found the type of the single element }
|