Bug 343166: $template->process leaks 512K of RAM per call under mod_perl

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=justdave, a=justdave
This commit is contained in:
mkanat%bugzilla.org 2006-07-01 16:10:14 +00:00
Родитель a3a029b509
Коммит e33a465cf4
1 изменённых файлов: 15 добавлений и 1 удалений

Просмотреть файл

@ -300,7 +300,21 @@ sub custom_field_names {
sub request_cache {
if ($ENV{MOD_PERL}) {
require Apache2::RequestUtil;
return Apache2::RequestUtil->request->pnotes();
my $request = Apache2::RequestUtil->request;
my $cache = $request->pnotes();
# Sometimes mod_perl doesn't properly call DESTROY on all
# the objects in pnotes(), so we register a cleanup handler
# to make sure that this happens.
if (!$cache->{cleanup_registered}) {
$request->push_handlers(PerlCleanupHandler => sub {
my $r = shift;
foreach my $key (keys %{$r->pnotes}) {
delete $r->pnotes->{$key};
}
});
$cache->{cleanup_registered} = 1;
}
return $cache;
}
return $_request_cache;
}