handle_options(): do not miscount how many arguments were used
commit73546c085d49694c5e54b421f80bde6bc25006fb
authorJunio C Hamano <gitster@pobox.com>
Tue, 24 May 2011 22:50:35 +0000 (24 18:50 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 24 May 2011 23:25:46 +0000 (24 16:25 -0700)
tree5c1ad80fbf8fb766ab25de47819c3a46b4c1c758
parent06eb708f331f0829081f4f3fb3c465eaae345deb
handle_options(): do not miscount how many arguments were used

The handle_options() function advances the base of the argument array and
returns the number of arguments it used. The caller in handle_alias()
wants to reallocate the argv array it passes to this function, and
attempts to do so by subtracting the returned value to compensate for the
change handle_options() makes to the new_argv.

But handle_options() did not correctly count when "-c <config=value>" is
given, causing a wrong pointer to be passed to realloc().

Fix it by saving the original argv at the beginning of handle_options(),
and return the difference between the final value of argv, which will
relieve the places that move the array pointer from the additional burden
of keeping track of "handled" counter.

Noticed-by: Kazuki Tsujimoto
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git.c
t/t1300-repo-config.sh