Browse Source

* fixed derefdata corruption in case a unit is re-resolved and it has a
localsymtable with symbols/defs that need to be deref'ed

git-svn-id: trunk@14357 -

Jonas Maebe 15 years ago
parent
commit
c3eb47293a
1 changed files with 5 additions and 1 deletions
  1. 5 1
      compiler/fppu.pas

+ 5 - 1
compiler/fppu.pas

@@ -1094,7 +1094,11 @@ uses
            begin
            begin
              tstoredsymtable(globalsymtable).buildderef;
              tstoredsymtable(globalsymtable).buildderef;
              derefdataintflen:=derefdata.size;
              derefdataintflen:=derefdata.size;
-           end;
+           end
+         else
+           { the unit may have been re-resolved, in which case the current
+             position in derefdata is not necessarily at the end }
+            derefdata.seek(derefdata.size);
          tstoredsymtable(globalsymtable).buildderefimpl;
          tstoredsymtable(globalsymtable).buildderefimpl;
          if (flags and uf_local_symtable)<>0 then
          if (flags and uf_local_symtable)<>0 then
            begin
            begin