X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=9183864fe422500e4214e96695e67bbce3fb9576;hp=edca221d5998b0794fa5a53662b59f6d652514b8;hb=e8b9f2a92084b3b9dab6b2b879900481b8548b3b;hpb=8abcb585dabc655153a9f0f66e25945ea477c30d diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index edca221..9183864 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -65,7 +65,7 @@ __PACKAGE__->stats_class('Catalyst::Stats'); # Remember to update this in Catalyst::Runtime as well! -our $VERSION = '5.7012'; +our $VERSION = '5.7013'; sub import { my ( $class, @arguments ) = @_; @@ -920,6 +920,9 @@ If the last argument to C is a hash reference, it is assumed to contain GET parameter key/value pairs, which will be appended to the URI in standard fashion. +Note that uri_for is destructive to the passed hashref. Subsequent calls +with the same hashref may have unintended results. + Instead of C<$path>, you can also optionally pass a C<$action> object which will be resolved to a path using C<< $c->dispatcher->uri_for_action >>; if the first element of @@ -978,7 +981,7 @@ sub uri_for { $val = '' unless defined $val; (map { $_ = "$_"; - utf8::encode( $_ ); + utf8::encode( $_ ) if utf8::is_utf8($_); # using the URI::Escape pattern here so utf8 chars survive s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go; s/ /+/g; @@ -1432,6 +1435,7 @@ sub finalize_headers { } } else { + # everything should be bytes at this point, but just in case $c->response->content_length( bytes::length( $c->response->body ) ); } } @@ -1568,10 +1572,8 @@ sub prepare { } # For on-demand data - $c->request->{_context} = $c; - $c->response->{_context} = $c; - weaken( $c->request->{_context} ); - weaken( $c->response->{_context} ); + $c->request->_context($c); + $c->response->_context($c); # Allow engine to direct the prepare flow (for POE) if ( $c->engine->can('prepare') ) {