X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FAccessor%2FGrouped.pm;h=b983975a1971d364efacb8949aaa1b0c72d6cbb6;hb=4f8ce9da1b9d1723fcb6e031e4c5100a2285d087;hp=bdba1a85d21a5f4ddb0eb49909a4dcd3f69a6cf2;hpb=7c0c0281b66b04902e530d2da653440cb623d13a;p=p5sagit%2FClass-Accessor-Grouped.git diff --git a/lib/Class/Accessor/Grouped.pm b/lib/Class/Accessor/Grouped.pm index bdba1a8..b983975 100644 --- a/lib/Class/Accessor/Grouped.pm +++ b/lib/Class/Accessor/Grouped.pm @@ -303,8 +303,11 @@ sub get_inherited { no strict 'refs'; return ${$class.'::__cag_'.$_[1]} if defined(${$class.'::__cag_'.$_[1]}); - if (!@{$class.'::__cag_supers'}) { + # we need to be smarter about recalculation, as @ISA (thus supers) can very well change in-flight + my $pkg_gen = mro::get_pkg_gen ($class); + if (!@{$class.'::__cag_supers'} or ${$class.'::__cag_pkg_gen'} != $pkg_gen ) { @{$class.'::__cag_supers'} = $_[0]->get_super_paths; + ${$class.'::__cag_pkg_gen'} = $pkg_gen; }; foreach (@{$class.'::__cag_supers'}) {