Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b3e51007

Von Sven Schöling vor mehr als 13 Jahren hinzugefügt

  • ID b3e5100711d6378ba5bdc09a0355488e79048acf
  • Vorgänger 5e7090a6
  • Nachfolger 7e45b2e9

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.

Unterschiede anzeigen:

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