From: Sven Schöling Date: Thu, 24 Mar 2011 09:25:26 +0000 (+0100) Subject: Leaks in SL::Template::Plugin::T8 X-Git-Tag: release-2.6.3~33^2~16 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=b3e5100711d6378ba5bdc09a0355488e79048acf;p=kivitendo-erp.git Leaks in SL::Template::Plugin::T8 Filter werden in Template::Toolkit in einer anonymen Closure einfach im Kontext verlinkt. Dadurch geht _jedes_ Filter Objekt verloren und leakt. Diese Änderung cacht das T8 Filterobjekt, da es sowieso statisch ist. Das beschränkt die Leaks auf einmal ~100 Byte. --- diff --git a/SL/Template/Plugin/T8.pm b/SL/Template/Plugin/T8.pm index 6c584d72c..ca62e8604 100644 --- a/SL/Template/Plugin/T8.pm +++ b/SL/Template/Plugin/T8.pm @@ -1,14 +1,19 @@ package SL::Template::Plugin::T8; use strict; +use parent qw( Template::Plugin::Filter ); -use Template::Plugin::Filter; -use base qw( Template::Plugin::Filter ); +my $cached_instance; + +sub new { + my ($class) = shift; + + return $cached_instance ||= $class->SUPER::new(@_); +} sub init { my $self = shift; - # first arg can specify filter name $self->install_filter($self->{ _ARGS }->[0] || 'T8'); return $self;