IDE: package manager: fixed crash caused by TPkgManager.AddDependencyToOwners

git-svn-id: trunk@21512 -
This commit is contained in:
mattias 2009-09-01 10:35:50 +00:00
parent 262c12f429
commit a9ffff9a88
2 changed files with 8 additions and 10 deletions

View File

@ -1885,23 +1885,18 @@ var
Dependency: TPkgDependency;
begin
if Count=0 then exit;
// mark all packages as unneeded
for i:=0 to FItems.Count-1 do begin
Pkg:=TLazPackage(FItems[i]);
Pkg.Flags:=Pkg.Flags-[lpfNeeded];
end;
// create stack
GetMem(PkgStack,SizeOf(Pointer)*Count);
StackPtr:=0;
// put all needed packages on stack
// put all needed packages on stack and set lpfNeeded
for i:=0 to FItems.Count-1 do begin
Pkg:=TLazPackage(FItems[i]);
if PackageIsNeeded(Pkg)
and (not (lpfNeeded in Pkg.Flags)) then begin
if PackageIsNeeded(Pkg) then begin
Pkg.Flags:=Pkg.Flags+[lpfNeeded];
PkgStack[StackPtr]:=Pkg;
inc(StackPtr);
end;
end else
Pkg.Flags:=Pkg.Flags-[lpfNeeded];
end;
// mark all needed packages
while StackPtr>0 do begin

View File

@ -3245,6 +3245,7 @@ var
i: Integer;
Item: TObject;
NewDependency: TPkgDependency;
ADependency: TPkgDependency;
begin
if not OnlyTestIfPossible then begin
Result:=AddDependencyToOwners(OwnerList,APackage,true);
@ -3265,7 +3266,9 @@ begin
if not CheckAddingDependency(TLazPackage(Item),NewDependency) then
exit;
if not OnlyTestIfPossible then begin
PackageGraph.AddDependencyToPackage(TLazPackage(Item),NewDependency);
ADependency:=NewDependency;
NewDependency:=nil;
PackageGraph.AddDependencyToPackage(TLazPackage(Item),ADependency);
end;
finally
NewDependency.Free;