diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-10-03 16:01:36 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-10-03 16:01:36 -0400 |
commit | 4a0943dadf0253463847e987f76fc3a0c9505b71 (patch) | |
tree | 18a78bdb007b514891d0d6476518b9df24c847a0 /lib/Bread/Board/Declare | |
parent | 463f70ef1f67d7de54414712a77ea45ebe700b39 (diff) | |
download | bread-board-declare-4a0943dadf0253463847e987f76fc3a0c9505b71.tar.gz bread-board-declare-4a0943dadf0253463847e987f76fc3a0c9505b71.zip |
remove some memory cycles (Roman Daniel)
Diffstat (limited to 'lib/Bread/Board/Declare')
-rw-r--r-- | lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm | 3 | ||||
-rw-r--r-- | lib/Bread/Board/Declare/Role/Object.pm | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm b/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm index 935e5cb..b1db7fd 100644 --- a/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm +++ b/lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm @@ -170,10 +170,11 @@ after attach_to_class => sub { ); } else { + my $name = $self->name; $service = Bread::Board::Declare::BlockInjection->new( %params, block => sub { - die "Attribute " . $self->name . " did not specify a service." + die "Attribute $name did not specify a service." . " It must be given a value through the constructor or" . " writer method before it can be resolved." }, diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm index ad1f80a..1c5f244 100644 --- a/lib/Bread/Board/Declare/Role/Object.pm +++ b/lib/Bread/Board/Declare/Role/Object.pm @@ -23,11 +23,12 @@ after BUILD => sub { ); for my $service ($meta->get_all_services) { if ($service->isa('Bread::Board::Declare::BlockInjection')) { + Scalar::Util::weaken(my $weakself = $self); my $block = $service->block; $self->add_service( $service->clone( block => sub { - $block->(@_, $self) + $block->(@_, $weakself) }, ) ); |