Bladeren bron

* check for duplicate identifiers when inserting union symtables into the
parent record symtable (mantis #26704)

git-svn-id: trunk@28820 -

Jonas Maebe 10 jaren geleden
bovenliggende
commit
f6f304e0ca
3 gewijzigde bestanden met toevoegingen van 14 en 2 verwijderingen
  1. 1 0
      .gitattributes
  2. 2 2
      compiler/symtable.pas
  3. 11 0
      tests/webtbf/tw26704.pp

+ 1 - 0
.gitattributes

@@ -12858,6 +12858,7 @@ tests/webtbf/tw26456.pp svneol=native#text/pascal
 tests/webtbf/tw2650.pp svneol=native#text/plain
 tests/webtbf/tw2657.pp svneol=native#text/plain
 tests/webtbf/tw2670.pp svneol=native#text/plain
+tests/webtbf/tw26704.pp svneol=native#text/plain
 tests/webtbf/tw2719.pp svneol=native#text/plain
 tests/webtbf/tw2721.pp svneol=native#text/plain
 tests/webtbf/tw2724.pp svneol=native#text/plain

+ 2 - 2
compiler/symtable.pas

@@ -1374,9 +1374,9 @@ implementation
             if tfieldvarsym(sym).fieldoffset=0 then
               include(tfieldvarsym(sym).varoptions,vo_is_first_field);
 
-            { add to this record symtable }
+            { add to this record symtable, checking for duplicate names }
 //            unionst.SymList.List.List^[i].Data:=nil;
-            sym.ChangeOwner(self);
+            insert(sym);
             varalign:=tfieldvarsym(sym).vardef.alignment;
             if varalign=0 then
               varalign:=size_2_align(tfieldvarsym(sym).getsize);

+ 11 - 0
tests/webtbf/tw26704.pp

@@ -0,0 +1,11 @@
+{ %fail }
+
+type
+  TTest = record
+    Value: Byte;
+    case Integer of
+      0: (Value: Word);
+  end;
+
+begin
+end.