]> rtime.felk.cvut.cz Git - git.git/commitdiff
Merge branch 'jk/maint-send-email-alias-loop'
authorJunio C Hamano <gitster@pobox.com>
Sat, 25 Jul 2009 07:44:45 +0000 (00:44 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 25 Jul 2009 07:44:45 +0000 (00:44 -0700)
* jk/maint-send-email-alias-loop:
  send-email: detect cycles in alias expansion

git-send-email.perl

index 8ce6f1fe57579201c09cf960caed98d330ab2bbb..d508f83349b57ac2e7148f090e2abbf0a398fce4 100755 (executable)
@@ -654,13 +654,17 @@ if (!@to) {
 }
 
 sub expand_aliases {
-       my @cur = @_;
-       my @last;
-       do {
-               @last = @cur;
-               @cur = map { $aliases{$_} ? @{$aliases{$_}} : $_ } @last;
-       } while (join(',',@cur) ne join(',',@last));
-       return @cur;
+       return map { expand_one_alias($_) } @_;
+}
+
+my %EXPANDED_ALIASES;
+sub expand_one_alias {
+       my $alias = shift;
+       if ($EXPANDED_ALIASES{$alias}) {
+               die "fatal: alias '$alias' expands to itself\n";
+       }
+       local $EXPANDED_ALIASES{$alias} = 1;
+       return $aliases{$alias} ? expand_aliases(@{$aliases{$alias}}) : $alias;
 }
 
 @to = expand_aliases(@to);