X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2F_Util.pm;h=37d4ad77ddf397300fb0a0902d0a21d431802844;hb=2603b49536d45448ac98cd8aa7c7393867cb0db2;hp=1c9c4b067cf50c31df68277325aa408942f15b27;hpb=8eac247d3f1150abf238ae6a119860cdc8cf02b9;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/_Util.pm b/lib/DBIx/Class/_Util.pm index 1c9c4b0..37d4ad7 100644 --- a/lib/DBIx/Class/_Util.pm +++ b/lib/DBIx/Class/_Util.pm @@ -734,13 +734,11 @@ sub modver_gt_or_eq_and_lt ($$$) { unless ( ($slot->{cumulative_gen}||0) == $my_gen ) { - # remove ourselves from ISA - shift @full_ISA; - # reset %$slot = ( class => $class, - isa => [ + isa => { map { $_ => 1 } @full_ISA }, + linear_isa => [ @{ $mro_recursor_stack->{cache}{$stack_cache_key}{linear_isa} } [ 1 .. $#{$mro_recursor_stack->{cache}{$stack_cache_key}{linear_isa}} ] ], @@ -751,6 +749,9 @@ sub modver_gt_or_eq_and_lt ($$$) { cumulative_gen => $my_gen, ); + # remove ourselves from ISA + shift @full_ISA; + # ensure the cache is populated for the parents, code below can then # efficiently operate over the query_cache directly describe_class_methods($_) for reverse @full_ISA;