s/1/2/
Brandon L Black [Thu, 9 Nov 2006 22:33:14 +0000 (22:33 +0000)]
lib/Algorithm/C3.pm
t/011_infinite_loop.t

index be88dc5..009bc10 100644 (file)
@@ -24,10 +24,12 @@ sub merge {
     my $current_parents = [ $root->$parent_fetcher ];
     my $recurse_mergeout = [];
     my $i = 0;
+    my %seen;
 
     while(1) {
         if($i < @$current_parents) {
             my $new_root = $current_parents->[$i++];
+            die "Infinite loop detected" if $seen{$new_root}++;
 
             unless ($pfetcher_is_coderef or $new_root->can($parent_fetcher)) {
                 confess "Could not find method $parent_fetcher in $new_root";
index 24f4e76..05af588 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 1;
+use Test::More tests => 2;
 
 BEGIN {
     use_ok('Algorithm::C3');