diff --git a/mvwrap/mvwrap b/mvwrap/mvwrap index 963204f..c459276 100755 --- a/mvwrap/mvwrap +++ b/mvwrap/mvwrap @@ -170,11 +170,16 @@ sub check_unique (@target_list){ # Returns an array of unsafe line numbers sub check_safety { my ($from, $to) = @_; - my ($i, $j, @danger, @unique, %seen); + my ($i, $j, @changed, @danger, @unique, %seen); my ($a, $b); - for ( $i=0 ; $i < scalar(@$from) ; $i++ ) { - for ( $j=0; $j < scalar(@$to); $j++ ) { - $a = $from->[$i]; chomp($a); + for ($i=0; $i < scalar(@$from); $i++){ + $a = $from->[$i]; chomp($a); + $b = $to->[$i]; chomp($b); + push @changed, $i if ($a ne $b); + } + foreach $i (@changed) { + $a = $from->[$i]; chomp($a); + for ($j=0; $j < scalar(@$to); $j++){ $b = $to->[$j]; chomp($b); if (($a eq $b) && ($i != $j)) { push @danger, $i; @@ -182,6 +187,7 @@ sub check_safety { } } } + %seen = (); @unique = grep { ! $seen{$_} ++ } @danger; return @unique;