Commit 0fd94fa0 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

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
parent a0196b5d
......@@ -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;
}
......
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