Skip to content

Commit

Permalink
made unsubscribe a little smarter
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Oct 29, 2013
1 parent dd8d6db commit b98b86e
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/Mojo/EventEmitter.pm
Expand Up @@ -68,8 +68,9 @@ sub unsubscribe {
my ($self, $name, $cb) = @_;

# One
if ($cb && @{$self->{events}{$name}} > 1) {
if ($cb) {
$self->{events}{$name} = [grep { $cb ne $_ } @{$self->{events}{$name}}];
delete $self->{events}{$name} unless @{$self->{events}{$name}};
}

# All
Expand Down
3 changes: 3 additions & 0 deletions t/mojo/eventemitter.t
Expand Up @@ -22,7 +22,10 @@ eval { $e->emit_safe(error => 'works') };
like $@, qr/^Mojo::EventEmitter: works/, 'right error';

# Exception in error event
ok !$e->has_subscribers('error'), 'no subscribers';
$e->once(error => sub { die "$_[1]entional" });
$e->unsubscribe(error => sub { });
ok $e->has_subscribers('error'), 'has subscribers';
eval { $e->emit(error => 'int') };
like $@, qr/^intentional/, 'right error';
$e->once(error => sub { die "$_[1]entional" });
Expand Down

0 comments on commit b98b86e

Please sign in to comment.