mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-04 13:37:22 +01:00
IDE: package manager: fixed crash caused by TPkgManager.AddDependencyToOwners
git-svn-id: trunk@21512 -
This commit is contained in:
parent
262c12f429
commit
a9ffff9a88
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user