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>
Tay Ray Chuan committed
Nov 3, 2011 at 00:17 UTC
3706ed298cbb5d4052ca0793ca36d9f28b4885bc
1 file changed
+8
-5
builtin/branch.c
+8
-5
@@ -719,11 +719,14 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
719
else if (list)
720
return print_ref_list(kinds, detached, verbose, abbrev,
721
with_commit, argv);
722
- else if (rename && (argc == 1))
723
- rename_branch(head, argv[0], rename > 1);
724
- else if (rename && (argc == 2))
725
- rename_branch(argv[0], argv[1], rename > 1);
726
- else if (argc <= 2) {
722
+ else if (rename) {
723
+ if (argc == 1)
724
+ rename_branch(head, argv[0], rename > 1);
725
+ else if (argc == 2)
726
+ rename_branch(argv[0], argv[1], rename > 1);
727
+ else
728
+ usage_with_options(builtin_branch_usage, options);
729
+ } else if (argc <= 2) {
730
if (kinds != REF_LOCAL_BRANCH)
731
die(_("-a and -r options to 'git branch' do not make sense with a branch name"));
732
create_branch(head, argv[0], (argc == 2) ? argv[1] : head,