Mercurial > pub > Impl
comparison Lib/IMPL/Web/View/TTDocument.pm @ 307:2da2564f115d
*TTView: fixed memory leak
author | cin |
---|---|
date | Thu, 18 Apr 2013 02:21:28 +0400 |
parents | b5d5793f348e |
children | 47a09a8dc23a |
comparison
equal
deleted
inserted
replaced
306:d4caf951260d | 307:2da2564f115d |
---|---|
22 } | 22 } |
23 ], | 23 ], |
24 props => [ | 24 props => [ |
25 layout => PROP_RW, | 25 layout => PROP_RW, |
26 loader => PROP_RW, | 26 loader => PROP_RW, |
27 baseLocation => PROP_RW | |
27 ] | 28 ] |
28 }; | 29 }; |
29 | 30 |
30 sub CTOR { | 31 sub CTOR { |
31 my ($this,$template,$ctx,$loader,$vars) = @_; | 32 my ($this,$template,$ctx,$loader,$vars) = @_; |
48 | 49 |
49 my $registry = TTRegistry->new($this->loader, $documentContext); | 50 my $registry = TTRegistry->new($this->loader, $documentContext); |
50 | 51 |
51 $this->context->stash->update({ | 52 $this->context->stash->update({ |
52 require => sub { $registry->Require(shift) }, | 53 require => sub { $registry->Require(shift) }, |
53 document => $this | 54 document => sub { $this } |
54 }); | 55 }); |
55 | 56 |
56 my $text = eval { | 57 my $text = eval { |
57 | 58 |
58 if ($this->layout) { | 59 if ($this->layout) { |
86 my $e = $@; | 87 my $e = $@; |
87 | 88 |
88 $registry->Dispose(); | 89 $registry->Dispose(); |
89 undef $registry; | 90 undef $registry; |
90 $this->context->delocalise(); | 91 $this->context->delocalise(); |
92 | |
93 undef $this; | |
91 | 94 |
92 if ($e) { | 95 if ($e) { |
93 die $e; | 96 die $e; |
94 } else { | 97 } else { |
95 return $text; | 98 return $text; |