提交 04ce83e2 编写于 作者: J Junio C Hamano

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
...@@ -565,7 +565,15 @@ static int git_show_branch_config(const char *var, const char *value, void *cb) ...@@ -565,7 +565,15 @@ static int git_show_branch_config(const char *var, const char *value, void *cb)
if (!strcmp(var, "showbranch.default")) { if (!strcmp(var, "showbranch.default")) {
if (!value) if (!value)
return config_error_nonbool(var); 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_alloc = default_alloc * 3 / 2 + 20;
default_arg = xrealloc(default_arg, sizeof *default_arg * default_alloc); 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) ...@@ -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 nothing is specified, try the default first */
if (ac == 1 && default_num) { if (ac == 1 && default_num) {
ac = default_num + 1; ac = default_num;
av = default_arg - 1; /* ick; we would not address av[0] */ av = default_arg;
} }
ac = parse_options(ac, av, prefix, builtin_show_branch_options, ac = parse_options(ac, av, prefix, builtin_show_branch_options,
......
...@@ -56,4 +56,12 @@ test_expect_success 'show-branch with more than 8 branches' ' ...@@ -56,4 +56,12 @@ test_expect_success 'show-branch with more than 8 branches' '
' '
test_expect_success 'show-branch with showbranch.default' '
for i in $numbers; do
git config --add showbranch.default branch$i
done &&
git show-branch >out &&
test_cmp expect out
'
test_done test_done
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册