From: preed%sigkill.com <>
Date: Mon, 23 Sep 2002 00:51:54 +0000 (+0000)
Subject: Bug 167485; group_id is wrong when usebuggroups is on; patch=joel, r=bbaetz/preed
X-Git-Tag: bugzilla-2.14.4~1
X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed55b7c61cb2be5b8fcf030cb12ba3311e04f283;p=thirdparty%2Fbugzilla.git
Bug 167485; group_id is wrong when usebuggroups is on; patch=joel, r=bbaetz/preed
---
diff --git a/editproducts.cgi b/editproducts.cgi
index f602c351ee..0b2c933389 100755
--- a/editproducts.cgi
+++ b/editproducts.cgi
@@ -326,6 +326,51 @@ if ($action eq 'new') {
$votestoconfirm ||= 0;
my $defaultmilestone = $::FORM{defaultmilestone} || "---";
+
+ # find the next bit first in case this operation fails; we don't calculate
+ # this by hand; table stolen from editgroups.cgi; see bug 167485
+ my $bit = "";
+ if(Param("usebuggroups")) {
+ my @bitvals = ('1','2','4','8','16','32','64','128','256','512','1024',
+ '2048','4096','8192','16384','32768',
+
+ '65536','131072','262144','524288','1048576','2097152',
+ '4194304','8388608','16777216','33554432','67108864',
+ '134217728','268435456','536870912','1073741824',
+ '2147483648',
+
+ '4294967296','8589934592','17179869184','34359738368',
+ '68719476736','137438953472','274877906944',
+ '549755813888','1099511627776','2199023255552',
+ '4398046511104','8796093022208','17592186044416',
+ '35184372088832','70368744177664','140737488355328',
+
+ '281474976710656','562949953421312','1125899906842624',
+ '2251799813685248','4503599627370496','9007199254740992',
+ '18014398509481984','36028797018963968','72057594037927936',
+ '144115188075855872','288230376151711744',
+ '576460752303423488','1152921504606846976',
+ '2305843009213693952','4611686018427387904');
+
+ # First the next available bit
+ foreach my $bv (@bitvals) {
+ if ($bit eq "") {
+ SendSQL("SELECT bit FROM groups WHERE bit=" . SqlQuote($bv));
+ if (!FetchOneColumn()) {
+ $bit = $bv;
+ }
+ }
+ }
+ if ($bit eq "") {
+ ShowError("Sorry, you already have the maximum number of groups " .
+ "defined.
You must delete a group first before you " .
+ "can add any more.");
+ PutTrailer("Back to the group list");
+ exit;
+ }
+ }
+
+
# Add the new product.
SendSQL("INSERT INTO products ( " .
"product, description, milestoneurl, disallownew, votesperuser, " .
@@ -349,16 +394,6 @@ if ($action eq 'new') {
# If we're using bug groups, then we need to create a group for this
# product as well. -JMR, 2/16/00
if(Param("usebuggroups")) {
- # First we need to figure out the bit for this group. We'll simply
- # use the next highest bit available. We'll use a minimum bit of 256,
- # to leave room for a few more Bugzilla operation groups at the bottom.
- SendSQL("SELECT MAX(bit) FROM groups");
- my $bit = FetchOneColumn();
- if($bit < 256) {
- $bit = 256;
- } else {
- $bit = $bit * 2;
- }
# Next we insert into the groups table
SendSQL("INSERT INTO groups " .
@@ -418,8 +453,6 @@ if ($action eq 'del') {
FROM products
WHERE product=" . SqlQuote($product));
my ($description, $milestoneurl, $disallownew) = FetchSQLData();
- my $milestonelink = $milestoneurl ? "$milestoneurl"
- : "missing";
$description ||= "description missing";
$disallownew = $disallownew ? 'closed' : 'open';
@@ -439,7 +472,7 @@ if ($action eq 'del') {
if (Param('usetargetmilestone')) {
print "