From: Sebastian Riedel Date: Fri, 11 Nov 2005 22:13:53 +0000 (+0000) Subject: Fixed dispatcher and restored old behavior X-Git-Tag: 5.7099_04~954 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=6d12f1d498c8f04610d1b222ae5f9a7301c3c312 Fixed dispatcher and restored old behavior --- diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index 1b64843..c6eed9e 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -86,10 +86,10 @@ sub forward { } my $local_args = 0; - my $arguments = []; + my $arguments = $c->req->args; if ( ref( $_[-1] ) eq 'ARRAY' ) { - $arguments = pop(@_); - $local_args++; + $arguments = pop(@_); + $local_args = 1; } my $result; @@ -111,12 +111,9 @@ sub forward { my $tail = $2; $result = $c->get_action( $tail, $1 ); if ($result) { - $command = $tail; - if ($local_args) { unshift( @{$arguments}, @extra_args ) } - else { - $local_args++; - $arguments = \@extra_args; - } + $local_args = 1; + $command = $tail; + push( @{$arguments}, @extra_args ); last DESCEND; } unshift( @extra_args, $tail ); @@ -163,9 +160,11 @@ qq/Couldn't forward to command "$command". Invalid action or component./; } - if ($local_args) { local $c->request->{arguments} = [ @{$arguments} ] } - - $result->execute($c); + if ($local_args) { + local $c->request->{arguments} = [ @{$arguments} ]; + $result->execute($c); + } + else { $result->execute($c) } return $c->state; }