sub detach {
my ( $c, $command, @args ) = @_;
$c->forward( $command, @args ) if $command;
+ # die with DETACH signal, which will be caught in dispatching.
die $Catalyst::Engine::DETACH;
}
$c->execute( @{ $end->[0] } );
return if scalar @{ $c->error };
}
- }
-
- else {
+ } else {
my $path = $c->req->path;
my $error = $path
? qq/Unknown resource "$path"/
unless ( @{$results} ) {
- unless ( $c->components->{$command} ) {
+ unless ( defined( $c->components->{$command} ) ) {
my $error =
qq/Couldn't forward to command "$command". Invalid action or component./;
$c->error($error);
if ( my $code = $c->components->{$class}->can($method) ) {
$c->actions->{reverse}->{"$code"} = "$class->$method";
$results = [ [ [ $class, $code ] ] ];
- }
-
- else {
+ } else {
my $error =
qq/Couldn't forward to "$class". Does not implement "$method"/;
$c->error($error);
push @results, [$result] if $result;
my $visitor = Tree::Simple::Visitor::FindByPath->new;
+ SEARCH:
for my $part ( split '/', $namespace ) {
$visitor->setSearchPath($part);
$parent->accept($visitor);
my $uid = $child->getUID if $child;
my $match = $c->actions->{private}->{$uid}->{$action} if $uid;
push @results, [$match] if $match;
- $parent = $child if $child;
+ if ($child) {
+ $parent = $child;
+ }
+ else {
+ last SEARCH;
+ }
}
}
my $actions = $self->actions;
my $privates = Text::ASCIITable->new;
+ undef $privates->{tiedarr}; # work-around for a memory leak
$privates->setCols( 'Private', 'Class' );
$privates->setColWidth( 'Private', 36, 1 );
$privates->setColWidth( 'Class', 37, 1 );
if ( @{ $privates->{tbl_rows} } );
my $publics = Text::ASCIITable->new;
+ undef $publics->{tiedarr}; # work-around for a memory leak
$publics->setCols( 'Public', 'Private' );
$publics->setColWidth( 'Public', 36, 1 );
$publics->setColWidth( 'Private', 37, 1 );
if ( @{ $publics->{tbl_rows} } );
my $regexes = Text::ASCIITable->new;
+ undef $regexes->{tiedarr}; # work-around for a memory leak
$regexes->setCols( 'Regex', 'Private' );
$regexes->setColWidth( 'Regex', 36, 1 );
$regexes->setColWidth( 'Private', 37, 1 );