fix for bug 51670: Dependency loops are possible

we now search each list (dependson, blocks) to see if a bug number shows
up in each list. a bug can't be dependent upon and block the same bug.
also make it so you can't set a bug blocking or dependent on itself.
This commit is contained in:
cyeh%bluemartini.com 2001-02-26 22:50:58 +00:00
Родитель c4d709039a
Коммит c97581c0fe
1 изменённых файлов: 23 добавлений и 1 удалений

Просмотреть файл

@ -755,6 +755,9 @@ The changes made were:
if ($comp ne $i) {
PuntTryAgain("$i is not a legal bug number");
}
if ($id eq $i) {
PuntTryAgain("You can't make a bug blocked or dependent on itself.");
}
if (!exists $seen{$i}) {
push(@{$deps{$target}}, $i);
$seen{$i} = 1;
@ -779,7 +782,26 @@ The changes made were:
}
}
if ($me eq 'dependson') {
my @deps = @{$deps{'dependson'}};
my @blocks = @{$deps{'blocked'}};
my @union = ();
my @isect = ();
my %union = ();
my %isect = ();
foreach my $b (@deps, @blocks) { $union{$b}++ && $isect{$b}++ }
@union = keys %union;
@isect = keys %isect;
if (@isect > 0) {
my $both;
foreach my $i (@isect) {
$both = $both . "#" . $i . " ";
}
PuntTryAgain("Dependency loop detected!<P>" .
"This bug can't be both blocked and dependent " .
"on bug " . $both . "!");
}
}
my $tmp = $me;
$me = $target;
$target = $tmp;