Quellcode durchsuchen

fcl-passrc: fixed releasing modules of a package

mattias vor 3 Jahren
Ursprung
Commit
43444ab7f0
1 geänderte Dateien mit 7 neuen und 1 gelöschten Zeilen
  1. 7 1
      packages/fcl-passrc/src/pastree.pp

+ 7 - 1
packages/fcl-passrc/src/pastree.pp

@@ -3365,9 +3365,15 @@ end;
 destructor TPasPackage.Destroy;
 destructor TPasPackage.Destroy;
 var
 var
   i: Integer;
   i: Integer;
+  aModule: TPasModule;
 begin
 begin
   for i := 0 to Modules.Count - 1 do
   for i := 0 to Modules.Count - 1 do
-    TPasModule(Modules[i]).Release{$IFDEF CheckPasTreeRefCount}('TPasPackage.Modules'){$ENDIF};
+    begin
+    aModule:=TPasModule(Modules[i]);
+    if aModule.Parent=Self then
+      aModule.Parent:=nil;
+    aModule.Release{$IFDEF CheckPasTreeRefCount}('TPasPackage.Modules'){$ENDIF};
+    end;
   FreeAndNil(Modules);
   FreeAndNil(Modules);
   inherited Destroy;
   inherited Destroy;
 end;
 end;