X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine.pm;h=6935c37cfd2d0bcb1e3306b61b8b9ed8d246e4e3;hb=3c0186f29e8864c86aca75f03f8d8ac1afd5507d;hp=c53bc129cb6a7dbcc5e44cfae66fcc17e5b64109;hpb=4d4d6635ada968ed67e4e82a6469f2843231a828;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm index c53bc12..6935c37 100644 --- a/lib/Catalyst/Engine.pm +++ b/lib/Catalyst/Engine.pm @@ -458,7 +458,7 @@ sub prepare_query_parameters { my ($param, $value) = map { $self->unescape_uri($_) } - split( /=/, $item ); + split( /=/, $item, 2 ); $param = $self->unescape_uri($item) unless defined $param; @@ -658,10 +658,9 @@ as Apache may implement this using Apache's C-based modules, for example. sub unescape_uri { my ( $self, $str ) = @_; - - $str =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; - $str =~ s/\+/ /g; - + + $str =~ s/(?:%([0-9A-Fa-f]{2})|\+)/defined $1 ? chr(hex($1)) : ' '/eg; + return $str; }