diff options
author | Tay Ray Chuan <rctay89@gmail.com> | 2011-11-03 00:17:12 +0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-11-02 12:35:37 -0700 |
commit | 3706ed298cbb5d4052ca0793ca36d9f28b4885bc (patch) | |
tree | ac8c721ab252d7516330c354d54eb505dd6e76bc | |
parent | 87bf9a7048c623b3567f612ca3e67a0d412fc83d (diff) | |
download | git-3706ed298cbb5d4052ca0793ca36d9f28b4885bc.tar.gz |
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>
-rw-r--r-- | builtin/branch.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/builtin/branch.c b/builtin/branch.c index 009b7138ac..51ca6a02d7 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, |