X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FController.pm;h=653363f640f49388f718d50e74cb83a13aa43793;hp=fbab60f4e8afbeb602269b2b97f5a103675ae58c;hb=dd4530ecdc4684838d9c0e9dc00adebb6100b022;hpb=e58865461d2d7c80b8136a4b853082cb8031975e diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index fbab60f..653363f 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -7,6 +7,7 @@ use String::RewritePrefix; use Moose::Util qw/find_meta/; use List::Util qw/first/; use List::MoreUtils qw/uniq/; +use Ref::Util qw(is_plain_arrayref); use namespace::clean -except => 'meta'; BEGIN { @@ -429,7 +430,7 @@ sub _parse_attrs { %raw_attributes, # Note we deep copy array refs here to stop crapping on config # when attributes are parsed. RT#65463 - exists $actions_config->{$name} ? map { ref($_) eq 'ARRAY' ? [ @$_ ] : $_ } %{ $actions_config->{$name } } : (), + exists $actions_config->{$name} ? map { is_plain_arrayref($_) ? [ @$_ ] : $_ } %{ $actions_config->{$name } } : (), ); # Private actions with additional attributes will raise a warning and then @@ -455,7 +456,7 @@ sub _parse_attr { my ($self, $c, $name, $key, $values) = @_; my %final_attributes; - foreach my $value (ref($values) eq 'ARRAY' ? @$values : $values) { + foreach my $value (is_plain_arrayref($values) ? @$values : $values) { my $meth = "_parse_${key}_attr"; if ( my $code = $self->can($meth) ) { my %new_attrs = $self->$code( $c, $name, $value );