show-branch: fix segfault when showbranch.default exists
authorJunio C Hamano <gitster@pobox.com>
Tue, 9 Jun 2009 06:26:44 +0000 (23:26 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 4 Oct 2009 21:44:34 +0000 (14:44 -0700)
commit3af1cae469555485cd3ef003aa2a55bd2a4f544f
tree90d51c0e12927afc0fd6e71afec182f80babdc60
parent57343652a55bdc3e7f3cf8c6def94dac482c72e5
show-branch: fix segfault when showbranch.default exists

When running "git show-branch" without any parameter in a repository that
has showbranch.default defined, we used to rely on the fact that our
handcrafted option parsing loop never looked at av[0].

The array of default strings had the first real command line argument in
default_arg[0], but the option parser wanted to look at the array starting
at av[1], so we assigned the address of -1th element to av to force the
loop start working from default_arg[0].

This no longer worked since 5734365 (show-branch: migrate to parse-options
API, 2009-05-21), as parse_options_start() saved the incoming &av[0] in
its ctx->out and later in parse_options_end() it did memmove to ctx->out
(with ctx->cpidx == 0), overwriting the memory before default_arg[] array.

I am not sure if this is a bug in parse_options(), or a bug in the caller,
and tonight I do not have enough concentration to figure out which.  In
any case, this patch works the issue around.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-show-branch.c
t/t3202-show-branch-octopus.sh