From: Johannes Sixt Date: Thu, 23 Jul 2009 12:30:55 GMT Subject: Re: infinite loop in git-send-email with alias files Message-ID: <4A6857FF.5070401@viscovery.net> In-Reply-To: <20090723110928.GC4247@coredump.intra.peff.net> Jeff King schrieb: > +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; What does 'local' make local here? Only the assignment of the slot $EXPANDED_ALIASES{$alias}? Or the whole %EXPANDED_ALIASES? If the latter, does this copy the existing %EXPANDED_ALIASES before the assignment is made; otherwise, how can this work if only ever a single slot of %EXPANDED_ALIASES is filled in? (Disclaimer: I'm not a perl expert, obviously, and I didn't test your patch.) -- Hannes