summaryrefslogtreecommitdiff
path: root/builtin/branch.c
diff options
context:
space:
mode:
authorTay Ray Chuan <rctay89@gmail.com>2011-11-02 16:17:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-11-02 19:35:37 (GMT)
commit3706ed298cbb5d4052ca0793ca36d9f28b4885bc (patch)
treeac8c721ab252d7516330c354d54eb505dd6e76bc /builtin/branch.c
parent87bf9a7048c623b3567f612ca3e67a0d412fc83d (diff)
downloadgit-3706ed298cbb5d4052ca0793ca36d9f28b4885bc.zip
git-3706ed298cbb5d4052ca0793ca36d9f28b4885bc.tar.gz
git-3706ed298cbb5d4052ca0793ca36d9f28b4885bc.tar.bz2
branch -m: handle no arg properly
Modify the option parsing heuristic to handle all -m (rename) cases, including the no-arg case. Previously, this "fell through" to the (argc <= 2) case and caused segfault. Reported-by: Stefan Näwe <stefan.naewe@atlas-elektronik.com> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/branch.c')
-rw-r--r--builtin/branch.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/builtin/branch.c b/builtin/branch.c
index 009b713..51ca6a0 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -719,11 +719,14 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
else if (list)
return print_ref_list(kinds, detached, verbose, abbrev,
with_commit, argv);
- else if (rename && (argc == 1))
- rename_branch(head, argv[0], rename > 1);
- else if (rename && (argc == 2))
- rename_branch(argv[0], argv[1], rename > 1);
- else if (argc <= 2) {
+ else if (rename) {
+ if (argc == 1)
+ rename_branch(head, argv[0], rename > 1);
+ else if (argc == 2)
+ rename_branch(argv[0], argv[1], rename > 1);
+ else
+ usage_with_options(builtin_branch_usage, options);
+ } else if (argc <= 2) {
if (kinds != REF_LOCAL_BRANCH)
die(_("-a and -r options to 'git branch' do not make sense with a branch name"));
create_branch(head, argv[0], (argc == 2) ? argv[1] : head,