From 65bbd453dc8cedef86af52a37dd84ed0257acb62 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Thu, 22 Dec 2016 20:35:20 -0500 Subject: Bug 1301383 - Memoize does not work under threaded perl in windows: "Anonymous function called in forbidden scalar context" --- Bugzilla/Constants.pm | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index 2e3f339a7..7a48995da 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -15,7 +15,6 @@ use parent qw(Exporter); # For bz_locations use File::Basename; -use Memoize; @Bugzilla::Constants::EXPORT = qw( BUGZILLA_VERSION @@ -641,9 +640,13 @@ use constant EMAIL_LIMIT_EXCEPTION => "email_limit_exceeded\n"; use constant JOB_QUEUE_VIEW_MAX_JOBS => 500; sub bz_locations { - # Force memoize() to re-compute data per project, to avoid + # Force $memoize to re-compute data per project, to avoid # sharing the same data across different installations. - return _bz_locations($ENV{'PROJECT'}); + state $memoize = {}; + my $project = $ENV{PROJECT}; + my $key = $project // '__DEFAULT'; + + return $memoize->{$key} //= _bz_locations($project); } sub _bz_locations { @@ -704,10 +707,6 @@ sub _bz_locations { }; } -# This makes us not re-compute all the bz_locations data every time it's -# called. -BEGIN { memoize('_bz_locations') }; - 1; =head1 B -- cgit v1.2.3-24-g4f1b