浏览代码

* as it seems that UnitImportSyms stores symbols that are already freed add an additional check to tderef.build() for tdef (in addition to tsym) to find code that triggers such cases more easily

git-svn-id: trunk@34408 -
svenbarth 9 年之前
父节点
当前提交
3ea78f53ad
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      compiler/symtype.pas

+ 4 - 2
compiler/symtype.pas

@@ -751,7 +751,7 @@ implementation
                  tsym(s).register_sym;
                  tsym(s).register_sym;
                st:=FindUnitSymtable(tsym(s).owner)
                st:=FindUnitSymtable(tsym(s).owner)
              end
              end
-           else
+           else if s is tdef then
              begin
              begin
                { same as above }
                { same as above }
                if tdef(s).defid=defid_registered_nost then
                if tdef(s).defid=defid_registered_nost then
@@ -759,7 +759,9 @@ implementation
                if not tdef(s).registered then
                if not tdef(s).registered then
                  tdef(s).register_def;
                  tdef(s).register_def;
                st:=FindUnitSymtable(tdef(s).owner);
                st:=FindUnitSymtable(tdef(s).owner);
-             end;
+             end
+           else
+             internalerror(2016090201);
            if not st.iscurrentunit then
            if not st.iscurrentunit then
              begin
              begin
                { register that the unit is needed for resolving }
                { register that the unit is needed for resolving }