summaryrefslogtreecommitdiff
path: root/builtin-show-branch.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-10-04 14:48:44 -0700
committerJunio C Hamano <gitster@pobox.com>2009-10-04 14:48:44 -0700
commit04ce83e2b9a1f1512d3d0c873e8f13d06761620c (patch)
tree2ac6b140088072d7b01f44b86a36490f2dc318e0 /builtin-show-branch.c
parentbb8cccd01762d26c832b85d3b09798650e294c5f (diff)
parent3af1cae469555485cd3ef003aa2a55bd2a4f544f (diff)
downloadgit-04ce83e2b9a1f1512d3d0c873e8f13d06761620c.tar.gz
Merge branch 'jc/maint-1.6.4-show-branch-default' into maint
* jc/maint-1.6.4-show-branch-default: show-branch: fix segfault when showbranch.default exists
Diffstat (limited to 'builtin-show-branch.c')
-rw-r--r--builtin-show-branch.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/builtin-show-branch.c b/builtin-show-branch.c
index 01bea3b583..baec9ed56f 100644
--- a/builtin-show-branch.c
+++ b/builtin-show-branch.c
@@ -565,7 +565,15 @@ static int git_show_branch_config(const char *var, const char *value, void *cb)
if (!strcmp(var, "showbranch.default")) {
if (!value)
return config_error_nonbool(var);
- if (default_alloc <= default_num + 1) {
+ /*
+ * default_arg is now passed to parse_options(), so we need to
+ * mimick the real argv a bit better.
+ */
+ if (!default_num) {
+ default_alloc = 20;
+ default_arg = xcalloc(default_alloc, sizeof(*default_arg));
+ default_arg[default_num++] = "show-branch";
+ } else if (default_alloc <= default_num + 1) {
default_alloc = default_alloc * 3 / 2 + 20;
default_arg = xrealloc(default_arg, sizeof *default_arg * default_alloc);
}
@@ -692,8 +700,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
/* If nothing is specified, try the default first */
if (ac == 1 && default_num) {
- ac = default_num + 1;
- av = default_arg - 1; /* ick; we would not address av[0] */
+ ac = default_num;
+ av = default_arg;
}
ac = parse_options(ac, av, prefix, builtin_show_branch_options,