Changeset 1427
- Timestamp:
- 02/28/08 22:31:24 (6 months ago)
- Files:
-
- branches/release-30/lib/MT.pm.pre (modified) (2 diffs)
- branches/release-30/lib/MT/Builder.pm (modified) (3 diffs)
- branches/release-30/lib/MT/Component.pm (modified) (2 diffs)
- branches/release-30/lib/MT/Template.pm (modified) (6 diffs)
- branches/release-30/lib/MT/Util.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/release-30/lib/MT.pm.pre
r1402 r1427 11 11 use File::Spec; 12 12 use File::Basename; 13 use MT::Util qw( weaken ); 13 14 14 15 our ( $VERSION, $SCHEMA_VERSION ); … … 398 399 unless ( $mt->{cfg} ) { 399 400 require MT::ConfigMgr; 400 $mt->{cfg} = MT::ConfigMgr->instance;401 weaken( $mt->{cfg} = MT::ConfigMgr->instance ); 401 402 } 402 403 if (@_) { branches/release-30/lib/MT/Builder.pm
r1426 r1427 9 9 use strict; 10 10 use base qw( MT::ErrorHandler ); 11 use MT::Util qw( weaken ); 11 12 12 13 use constant NODE => 'MT::Template::Node'; … … 208 209 } 209 210 } 210 $rec->[5] = $opt->{parent} || $tmpl;211 $rec->[6] = $tmpl;211 weaken($rec->[5] = $opt->{parent} || $tmpl); 212 weaken($rec->[6] = $tmpl); 212 213 push @{ $state->{tokens} }, $rec; 213 214 $pos = pos $text; … … 255 256 sub _text_block { 256 257 my $text = substr ${ $_[0]->{text} }, $_[1], $_[2] - $_[1]; 257 push @{ $_[0]->{tokens} }, bless [ 'TEXT', $text, undef, undef, undef, $_[0]->{tokens}, $_[0]->{tmpl} ], NODE 258 if (defined $text) && ($text ne ''); 258 if ((defined $text) && ($text ne '')) { 259 my $rec = bless [ 'TEXT', $text, undef, undef, undef, $_[0]->{tokens}, $_[0]->{tmpl} ], NODE; 260 # Avoids circular reference between NODE and TOKENS, MT::Template. 261 weaken($rec->[5]); 262 weaken($rec->[6]); 263 push @{ $_[0]->{tokens} }, $rec; 264 } 259 265 } 260 266 branches/release-30/lib/MT/Component.pm
r1174 r1427 9 9 use strict; 10 10 use base qw( Class::Accessor::Fast MT::ErrorHandler ); 11 use MT::Util qw( encode_js);11 use MT::Util qw( encode_js weaken ); 12 12 13 13 __PACKAGE__->mk_accessors(qw( id path envelope version schema_version )); … … 539 539 if ( ref $r eq 'HASH' ) { 540 540 __deep_localize_labels( $c, $r ); 541 $_->{plugin} = $c for grep { ref $_ eq 'HASH' } values %$r; 541 weaken($_->{plugin} = $c) 542 for grep { ref $_ eq 'HASH' } values %$r; 542 543 } 543 544 branches/release-30/lib/MT/Template.pm
r1372 r1427 9 9 use strict; 10 10 use base qw( MT::Object ); 11 use MT::Util qw( weaken ); 11 12 12 13 use constant NODE => 'MT::Template::Node'; … … 143 144 require MT::Template::Context; 144 145 my $ctx = $tmpl->{context} ||= MT::Template::Context->new; 145 $ctx->stash('template',$tmpl);146 weaken($ctx->{__stash}{'template'} = $tmpl); 146 147 return $ctx; 147 148 } … … 616 617 my $tmpl = shift; 617 618 my ($tag, $attr) = @_; 618 return bless [ $tag, $attr, undef, undef, undef, undef, $tmpl ], NODE; 619 my $node = bless [ $tag, $attr, undef, undef, undef, undef, $tmpl ], NODE; 620 weaken($node->[6]); 621 return $node; 619 622 } 620 623 … … 622 625 my $tmpl = shift; 623 626 my ($text) = @_; 624 return bless [ 'TEXT', $text, undef, undef, undef, undef, $tmpl ], NODE; 627 my $node = bless [ 'TEXT', $text, undef, undef, undef, undef, $tmpl ], NODE; 628 weaken($node->[6]); 629 return $node; 625 630 } 626 631 … … 740 745 741 746 use strict; 747 use MT::Util qw( weaken ); 742 748 743 749 sub setAttribute { … … 823 829 my $node = shift; 824 830 $node->[5] = shift if @_; 831 weaken($node->[5]); 825 832 $node->[5]; 826 833 } branches/release-30/lib/MT/Util.pm
r1425 r1427 25 25 extract_urls extract_domain extract_domains is_valid_date 26 26 epoch2ts ts2epoch escape_unicode unescape_unicode 27 sax_parser trim ltrim rtrim asset_cleanup caturl multi_iter ); 27 sax_parser trim ltrim rtrim asset_cleanup caturl multi_iter 28 weaken ); 29 30 { 31 my $Has_Weaken; 32 sub weaken { 33 $Has_Weaken = eval 'use Scalar::Util; 1' && Scalar::Util->can('weaken') ? 1 : 0 34 unless defined $Has_Weaken; 35 Scalar::Util::weaken($_[0]) if $Has_Weaken; 36 } 37 } 28 38 29 39 sub leap_day {
