From c97581c0fedbfe3024a603afb2e786ba1e0e086d Mon Sep 17 00:00:00 2001 From: "cyeh%bluemartini.com" Date: Mon, 26 Feb 2001 22:50:58 +0000 Subject: [PATCH] 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. --- webtools/bugzilla/process_bug.cgi | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/webtools/bugzilla/process_bug.cgi b/webtools/bugzilla/process_bug.cgi index 74780acb767c..061dadc93bca 100755 --- a/webtools/bugzilla/process_bug.cgi +++ b/webtools/bugzilla/process_bug.cgi @@ -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; @@ -778,8 +781,27 @@ 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!

" . + "This bug can't be both blocked and dependent " . + "on bug " . $both . "!"); + } + } my $tmp = $me; $me = $target; $target = $tmp;