Commit 61e26c13 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 476607: "Constant subroutine redefined" warnings from Bugzilla::Field::Choice

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=mkanat
parent 367a9694
...@@ -93,18 +93,18 @@ sub type { ...@@ -93,18 +93,18 @@ sub type {
# For generic classes, we use a lowercase class name, so as # For generic classes, we use a lowercase class name, so as
# not to interfere with any real subclasses we might make some day. # not to interfere with any real subclasses we might make some day.
my $package = "Bugzilla::Field::Choice::$field_name"; 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 # This package only needs to be created once. We check if the DB_TABLE
# created once globally (at least per request). We prefix it with # glob for this package already exists, which tells us whether or not
# field_ (instead of suffixing it) so that we don't somehow conflict # we need to create the package (this works even under mod_perl, where
# with the names of custom fields. # this package definition will persist across requests)).
if (!defined Bugzilla->request_cache->{"field_$package"}) { if (!defined *{"${package}::DB_TABLE"}) {
eval <<EOC; eval <<EOC;
package $package; package $package;
use base qw(Bugzilla::Field::Choice); use base qw(Bugzilla::Field::Choice);
use constant DB_TABLE => '$field_name'; use constant DB_TABLE => '$field_name';
EOC EOC
Bugzilla->request_cache->{"field_$package"} = $field_obj;
} }
return $package; return $package;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment