From 4a0943dadf0253463847e987f76fc3a0c9505b71 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 3 Oct 2013 16:01:36 -0400 Subject: remove some memory cycles (Roman Daniel) --- lib/Bread/Board/Declare/Meta/Role/Attribute/Service.pm | 3 ++- lib/Bread/Board/Declare/Role/Object.pm | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'lib') 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) }, ) ); -- cgit v1.2.3