Stupid regression - the primitive $isa{$_} does not take in consideration the ISA...
Peter Rabbitson [Thu, 24 Feb 2011 18:01:00 +0000 (18:01 +0000)]
Changes
lib/Class/C3/Componentised.pm

diff --git a/Changes b/Changes
index 5a5a1e4..dddd8a0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Class-C3-Componentised
 
+        Fix inject_base regression introduced during optimizations in
+        1.0007
+
 1.0007   23 Feb 2011
         Throw a readable exception when load_optional_class is given an
         invalid class name
index 5506a15..1f85d67 100644 (file)
@@ -188,13 +188,10 @@ sub inject_base {
   my $class = shift;
   my $target = shift;
 
-  my %isa = map { $_ => 1 } ($target, @{mro::get_linear_isa($target)} );
-
   for (reverse @_) {
     no strict 'refs';
-    unless ($isa{$_}++) {
-      unshift ( @{"${target}::ISA"}, $_ );
-    }
+    unshift ( @{"${target}::ISA"}, $_ )
+      unless ($target eq $_ || $target->isa($_));
   }
 
   mro::set_mro($target, 'c3');