浏览代码

* don't free deref info after using it, because it may be needed again
again later (in case of recompilations with circular unit references)
(mantis #13323)

git-svn-id: trunk@13024 -

Jonas Maebe 16 年之前
父节点
当前提交
02b14b2d5d
共有 1 个文件被更改,包括 6 次插入12 次删除
  1. 6 12
      compiler/wpoinfo.pas

+ 6 - 12
compiler/wpoinfo.pas

@@ -115,12 +115,9 @@ implementation
 
 
       ppufile.writeentry(ibcreatedobjtypes);
       ppufile.writeentry(ibcreatedobjtypes);
 
 
-      freemem(fcreatedobjtypesderefs);
-      fcreatedobjtypesderefs:=nil;
-      freemem(fcreatedclassrefobjtypesderefs);
-      fcreatedclassrefobjtypesderefs:=nil;
-      freemem(fmaybecreatedbyclassrefdeftypesderefs);
-      fmaybecreatedbyclassrefdeftypesderefs:=nil;
+      { don't free deref arrays immediately after use, as the types may need
+        re-resolving in case a unit needs to be reloaded
+      }
     end;
     end;
 
 
 
 
@@ -182,20 +179,17 @@ implementation
     var
     var
       i: longint;
       i: longint;
     begin
     begin
+      { don't free deref arrays immediately after use, as the types may need
+        re-resolving in case a unit needs to be reloaded
+      }
       for i:=0 to fcreatedobjtypes.count-1 do
       for i:=0 to fcreatedobjtypes.count-1 do
         fcreatedobjtypes[i]:=fcreatedobjtypesderefs^[i].resolve;
         fcreatedobjtypes[i]:=fcreatedobjtypesderefs^[i].resolve;
-      freemem(fcreatedobjtypesderefs);
-      fcreatedobjtypesderefs:=nil;
 
 
       for i:=0 to fcreatedclassrefobjtypes.count-1 do
       for i:=0 to fcreatedclassrefobjtypes.count-1 do
         fcreatedclassrefobjtypes[i]:=fcreatedclassrefobjtypesderefs^[i].resolve;
         fcreatedclassrefobjtypes[i]:=fcreatedclassrefobjtypesderefs^[i].resolve;
-      freemem(fcreatedclassrefobjtypesderefs);
-      fcreatedclassrefobjtypesderefs:=nil;
 
 
       for i:=0 to fmaybecreatedbyclassrefdeftypes.count-1 do
       for i:=0 to fmaybecreatedbyclassrefdeftypes.count-1 do
         fmaybecreatedbyclassrefdeftypes[i]:=fmaybecreatedbyclassrefdeftypesderefs^[i].resolve;
         fmaybecreatedbyclassrefdeftypes[i]:=fmaybecreatedbyclassrefdeftypesderefs^[i].resolve;
-      freemem(fmaybecreatedbyclassrefdeftypesderefs);
-      fmaybecreatedbyclassrefdeftypesderefs:=nil;
     end;
     end;