X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass.pm;h=444dc59ad7387c8f85e1cffdb95537b6dce9cf31;hb=da95b45ff00d6d11f7b6191bafdeae7177650110;hp=45ec142423a7b4267b4e6310495dd114a9c49cee;hpb=32da104267aec90fe9105444ebe5f985dc488658;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class.pm b/lib/DBIx/Class.pm index 45ec142..444dc59 100644 --- a/lib/DBIx/Class.pm +++ b/lib/DBIx/Class.pm @@ -17,15 +17,21 @@ $VERSION = '0.05999_04'; sub MODIFY_CODE_ATTRIBUTES { my ($class,$code,@attrs) = @_; - unless ($class->can('_attr_cache')) { - $class->mk_classdata('_attr_cache'); - $class->_attr_cache({}); + unless ($class->can('__attr_cache')) { + $class->mk_classdata('__attr_cache'); + $class->__attr_cache({}); } - my $cache = $class->_attr_cache; - $class->_attr_cache->{$code} = [@attrs]; + $class->__attr_cache->{$code} = [@attrs]; return (); } +sub _attr_cache { + my $self = shift; + my $cache = $self->can('__attr_cache') ? $self->__attr_cache : {}; + my $rest = eval { $self->next::method }; + return $@ ? $cache : { %$cache, %$rest }; +} + 1; =head1 NAME