зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
c4d709039a
Коммит
c97581c0fe
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче