lazbuild: fix memory leaks

git-svn-id: trunk@23612 -
This commit is contained in:
paul 2010-02-03 03:39:51 +00:00
parent bc1fd18141
commit c831cad6e0
3 changed files with 21 additions and 9 deletions

View File

@ -961,7 +961,12 @@ destructor TLazBuildApplication.Destroy;
begin
CloseProject(Project1);
FreeThenNil(PackageGraph);
if Assigned(PackageGraph) then
begin
PackageGraph.FreeAutoInstallDependencies;
FreeThenNil(PackageGraph);
end;
FreeThenNil(PkgLinks);
FreeThenNil(TheCompiler);
FreeThenNil(TheOutputFilter);

View File

@ -299,6 +299,7 @@ type
var InheritedOptionStrings: TInheritedCompOptsStrings): string;
function SaveAutoInstallConfig: TModalResult;// for the uses section
function IsStaticBasePackage(PackageName: string): boolean;
procedure FreeAutoInstallDependencies;
public
// registration
procedure RegisterUnitHandler(const TheUnitName: string;
@ -1963,6 +1964,19 @@ begin
or (PackageName='codetools');
end;
procedure TLazPackageGraph.FreeAutoInstallDependencies;
var
Dependency: TPkgDependency;
begin
while Assigned(PackageGraph.FirstAutoInstallDependency) do
begin
Dependency:=PackageGraph.FirstAutoInstallDependency;
Dependency.RequiredPackage:=nil;
Dependency.RemoveFromList(PackageGraph.FirstAutoInstallDependency,pdlRequires);
Dependency.Free;
end;
end;
procedure TLazPackageGraph.ClosePackage(APackage: TLazPackage);
begin
if (lpfDestroying in APackage.Flags) or PackageIsNeeded(APackage) then exit;

View File

@ -1806,18 +1806,11 @@ begin
end;
destructor TPkgManager.Destroy;
var
Dependency: TPkgDependency;
begin
if IDEComponentPalette<>nil then
TComponentPalette(IDEComponentPalette).Notebook:=nil;
FreeThenNil(LazPackageDescriptors);
while PackageGraph.FirstAutoInstallDependency<>nil do begin
Dependency:=PackageGraph.FirstAutoInstallDependency;
Dependency.RequiredPackage:=nil;
Dependency.RemoveFromList(PackageGraph.FirstAutoInstallDependency,pdlRequires);
Dependency.Free;
end;
PackageGraph.FreeAutoInstallDependencies;
FreeThenNil(PackageGraphExplorer);
FreeThenNil(PackageEditors);
FreeThenNil(PackageGraph);