summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xprocess_bug.cgi16
1 files changed, 12 insertions, 4 deletions
diff --git a/process_bug.cgi b/process_bug.cgi
index fe9163eef..ebdf43b77 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -445,10 +445,18 @@ if($::usergroupset ne '0') {
SendSQL("SELECT bit, isactive FROM groups WHERE " .
"isbuggroup != 0 AND bit & $::usergroupset != 0 ORDER BY bit");
while (my ($b, $isactive) = FetchSQLData()) {
- if (!$::FORM{"bit-$b"}) {
- $groupDel .= "+$b";
- } elsif ($::FORM{"bit-$b"} == 1 && $isactive) {
- $groupAdd .= "+$b";
+ # The multiple change page may not show all groups a bug is in
+ # (eg product groups when listing more than one product)
+ # Only consider groups which were present on the form. We can't do this
+ # for single bug changes because non-checked checkboxes aren't present.
+ # All the checkboxes should be shown in that case, though, so its not
+ # an issue there
+ if ($::FORM{'id'} || exists $::FORM{"bit-$b"}) {
+ if (!$::FORM{"bit-$b"}) {
+ $groupDel .= "+$b";
+ } elsif ($::FORM{"bit-$b"} == 1 && $isactive) {
+ $groupAdd .= "+$b";
+ }
}
}
if ($groupAdd ne "0" || $groupDel ne "0") {