From: Graham Knop Date: Mon, 30 Apr 2018 04:11:23 +0000 (+0200) Subject: fix uri_for handling of fragment with unblessed path X-Git-Tag: v5.90118~6 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=0cdca4d84f1a6afca5fd00b3fdff611b4ec505d4 fix uri_for handling of fragment with unblessed path --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 860822e..0068582 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1601,11 +1601,11 @@ sub uri_for { $path .= '/'; } - my $fragment = ((scalar(@args) && ref($args[-1]) eq 'SCALAR') ? pop @args : undef ); + my $fragment = ((scalar(@args) && ref($args[-1]) eq 'SCALAR') ? ${pop @args} : undef ); unless(blessed $path) { if (defined($path) and $path =~ s/#(.+)$//) { - if(defined($1) and $fragment) { + if(defined($1) and defined $fragment) { carp "Abiguious fragment declaration: You cannot define a fragment in '$path' and as an argument '$fragment'"; } if(defined($1)) { @@ -1725,7 +1725,7 @@ sub uri_for { if(defined $fragment) { if(blessed $path) { - $fragment = encode_utf8(${$fragment}); + $fragment = encode_utf8($fragment); $fragment =~ s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go; $fragment =~ s/ /+/g; }