libman, fix dep/clients cleanup on deletion

This commit is contained in:
Basile Burg 2016-10-30 12:51:55 +01:00
parent 905d8395b0
commit fa5c3c5d9d
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
1 changed files with 12 additions and 1 deletions

View File

@ -439,6 +439,7 @@ var
obj: TObject; obj: TObject;
lib: TLibraryItem; lib: TLibraryItem;
cli: TLibraryItem; cli: TLibraryItem;
dep: TLibraryItem;
begin begin
if data.isNil then if data.isNil then
exit; exit;
@ -449,7 +450,16 @@ begin
case operation of case operation of
ooDeleteItem: if fItemsByAlias.contains(lib.libAlias) then ooDeleteItem: if fItemsByAlias.contains(lib.libAlias) then
begin begin
fItemsByAlias.delete(lib.libAlias); for i:= 0 to lib.dependencies.Count-1 do
begin
dep := libraryByAlias[lib.dependencies[i]];
if assigned(dep) then
begin
j := dep.clients.IndexOf(lib.libAlias);
if j <> -1 then
dep.clients.Delete(j);
end;
end;
for i:= 0 to lib.clients.Count-1 do for i:= 0 to lib.clients.Count-1 do
begin begin
cli := libraryByAlias[lib.clients[i]]; cli := libraryByAlias[lib.clients[i]];
@ -460,6 +470,7 @@ begin
cli.dependencies.Delete(j); cli.dependencies.Delete(j);
end; end;
end; end;
fItemsByAlias.delete(lib.libAlias);
end; end;
ooAddItem: ooAddItem:
begin begin