From: mkanat%bugzilla.org <> Date: Mon, 23 Feb 2009 22:00:38 +0000 (+0000) Subject: Bug 476607: "Constant subroutine redefined" warnings from Bugzilla::Field::Choice X-Git-Tag: bugzilla-3.3.4~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61e26c1346d60a18946e50a35f95bfe3f223d408;p=thirdparty%2Fbugzilla.git Bug 476607: "Constant subroutine redefined" warnings from Bugzilla::Field::Choice Patch By Max Kanat-Alexander r=LpSolit, a=mkanat --- diff --git a/Bugzilla/Field/Choice.pm b/Bugzilla/Field/Choice.pm index 5f1578d2b0..fe5c7bdcbb 100644 --- a/Bugzilla/Field/Choice.pm +++ b/Bugzilla/Field/Choice.pm @@ -93,18 +93,18 @@ sub type { # For generic classes, we use a lowercase class name, so as # not to interfere with any real subclasses we might make some day. my $package = "Bugzilla::Field::Choice::$field_name"; + Bugzilla->request_cache->{"field_$package"} = $field_obj; - # We check defined so that the package and the stored field are only - # created once globally (at least per request). We prefix it with - # field_ (instead of suffixing it) so that we don't somehow conflict - # with the names of custom fields. - if (!defined Bugzilla->request_cache->{"field_$package"}) { + # This package only needs to be created once. We check if the DB_TABLE + # glob for this package already exists, which tells us whether or not + # we need to create the package (this works even under mod_perl, where + # this package definition will persist across requests)). + if (!defined *{"${package}::DB_TABLE"}) { eval < '$field_name'; EOC - Bugzilla->request_cache->{"field_$package"} = $field_obj; } return $package;