From: preed%sigkill.com <> Date: Mon, 23 Sep 2002 00:47:12 +0000 (+0000) Subject: Bug 167485; group_id is wrong when usebuggroups is on; patch=joel, r=bbaetz/preed X-Git-Tag: bugzilla-2.16.1~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b66ad3412df9b0b064ec55b6fcc5233a0e890142;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 1b3441a8a3..932c9a1b38 100755 --- a/editproducts.cgi +++ b/editproducts.cgi @@ -328,6 +328,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, " . @@ -351,16 +396,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 " .