Revision b3e51007
Von Sven Schöling vor mehr als 13 Jahren hinzugefügt
SL/Template/Plugin/T8.pm | ||
---|---|---|
1 | 1 |
package SL::Template::Plugin::T8; |
2 | 2 |
|
3 | 3 |
use strict; |
4 |
use parent qw( Template::Plugin::Filter ); |
|
4 | 5 |
|
5 |
use Template::Plugin::Filter; |
|
6 |
use base qw( Template::Plugin::Filter ); |
|
6 |
my $cached_instance; |
|
7 |
|
|
8 |
sub new { |
|
9 |
my ($class) = shift; |
|
10 |
|
|
11 |
return $cached_instance ||= $class->SUPER::new(@_); |
|
12 |
} |
|
7 | 13 |
|
8 | 14 |
sub init { |
9 | 15 |
my $self = shift; |
10 | 16 |
|
11 |
# first arg can specify filter name |
|
12 | 17 |
$self->install_filter($self->{ _ARGS }->[0] || 'T8'); |
13 | 18 |
|
14 | 19 |
return $self; |
Auch abrufbar als: Unified diff
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.