inject_base filters out double entries
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Componentised.pm
index fa9b7d9..7e62354 100644 (file)
@@ -1,13 +1,20 @@
-package # hide from PAUSE 
+package # hide from PAUSE
     DBIx::Class::Componentised;
 
+use strict;
+use warnings;
+
 use Class::C3;
 
 sub inject_base {
   my ($class, $target, @to_inject) = @_;
   {
     no strict 'refs';
-    unshift(@{"${target}::ISA"}, grep { $target ne $_ && !$target->isa($_)} @to_inject);
+    my %seen;
+    unshift( @{"${target}::ISA"},
+        grep { !$seen{ $_ }++ && $target ne $_ && !$target->isa($_) }
+            @to_inject
+    );
   }
 
   # Yes, this is hack. But it *does* work. Please don't submit tickets about