X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FAccessorGroup.pm;h=2b0462bc94ff9c1c5b3f5a3b1af666ba3295606f;hb=27e0370da6cfee04a24491eaa4ce7aa5c878bafa;hp=bd245e3dd9f9e77ebc4d09b5b8b8d80f425fdc5a;hpb=db29433c74a98967f61f117bd508c06055db2892;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/AccessorGroup.pm b/lib/DBIx/Class/AccessorGroup.pm index bd245e3..2b0462b 100644 --- a/lib/DBIx/Class/AccessorGroup.pm +++ b/lib/DBIx/Class/AccessorGroup.pm @@ -4,15 +4,24 @@ use strict; use warnings; use base qw/Class::Accessor::Grouped/; +use Scalar::Util qw/weaken/; +use namespace::clean; -our %successfully_loaded_components; +my $successfully_loaded_components; sub get_component_class { my $class = $_[0]->get_inherited($_[1]); - if (defined $class and ! $successfully_loaded_components{$class}) { + + if (defined $class and ! $successfully_loaded_components->{$class} ) { $_[0]->ensure_class_loaded($class); - $successfully_loaded_components{$class}++; # only increment if the load succeeded + + no strict 'refs'; + $successfully_loaded_components->{$class} + = ${"${class}::__LOADED__BY__DBIC__CAG__COMPONENT_CLASS__"} + = do { \(my $anon = 'loaded') }; + weaken($successfully_loaded_components->{$class}); } + $class; };