Ver Fonte

Avoid memory leak on tppumodule.unitimportsymsderefs

git-svn-id: trunk@34360 -
pierre há 9 anos atrás
pai
commit
ea4350d86a
1 ficheiros alterados com 16 adições e 0 exclusões
  1. 16 0
      compiler/fppu.pas

+ 16 - 0
compiler/fppu.pas

@@ -88,6 +88,7 @@ interface
           procedure queuecomment(const s:TMsgStr;v,w:longint);
           procedure buildderefunitimportsyms;
           procedure derefunitimportsyms;
+          procedure freederefunitimportsyms;
           procedure writesourcefiles;
           procedure writeusedunit(intf:boolean);
           procedure writelinkcontainer(var p:tlinkcontainer;id:byte;strippath:boolean);
@@ -155,6 +156,9 @@ var
         ppufile:=nil;
         comments.free;
         comments:=nil;
+        { all derefs allocated with new
+          are dispose'd inside this method }
+        freederefunitimportsyms;
         unitimportsymsderefs.free;
         unitimportsymsderefs:=nil;
         inherited Destroy;
@@ -642,6 +646,18 @@ var
           end;
       end;
 
+    procedure tppumodule.freederefunitimportsyms;
+      var
+        i : longint;
+        deref : pderef;
+      begin
+        for i:=0 to unitimportsymsderefs.count-1 do
+          begin
+            deref:=pderef(unitimportsymsderefs[i]);
+            system.dispose(deref);
+          end;
+      end;
+
 {**********************************
     PPU Reading/Writing Helpers
 ***********************************}