Felipe Contreras <felipe.contreras@xxxxxxxxx> writes: > It is possible for the name of an alias to end with the name of another > alias, in which case the code will incorrectly detect a loop. > > We can fix that by adding an extra space between words. > > Suggested-by: SZEDER Gábor <szeder.dev@xxxxxxxxx> > Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> > --- > contrib/completion/git-completion.bash | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) OK. An extra local variable would not hurt and makes the code easier to read. Will queue. > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index ce0dc1e0f8..cd2a02bafd 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -1121,16 +1121,17 @@ __git_pretty_aliases () > # __git_aliased_command requires 1 argument > __git_aliased_command () > { > - local cur=$1 list word cmdline > + local cur=$1 last list word cmdline > > while [[ -n "$cur" ]]; do > - if [[ "$list" == *"$cur "* ]]; then > + if [[ "$list" == *" $cur "* ]]; then > # loop detected > return > fi > > cmdline=$(__git config --get "alias.$cur") > - list="$cur $list" > + list=" $cur $list" > + last=$cur > cur= > > for word in $cmdline; do > @@ -1154,7 +1155,7 @@ __git_aliased_command () > done > done > > - cur="${list%% *}" > + cur=$last > if [[ "$cur" != "$1" ]]; then > echo "$cur" > fi