From: Junio C Hamano Date: Mon, 20 Aug 2018 19:41:33 +0000 (-0700) Subject: Merge branch 'pw/rebase-i-merge-segv-fix' X-Git-Tag: v2.19.0-rc0~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5a5c5e95653f8db61ca9d1a30159dcf5dc4a8d6a;p=git Merge branch 'pw/rebase-i-merge-segv-fix' "git rebase -i", when a 'merge ' insn in its todo list fails, segfaulted, which has been (minimally) corrected. * pw/rebase-i-merge-segv-fix: rebase -i: fix SIGSEGV when 'merge ' fails t3430: add conflicting commit --- 5a5c5e95653f8db61ca9d1a30159dcf5dc4a8d6a diff --cc sequencer.c index 2db52fe800,df49199175..65d371c746 --- a/sequencer.c +++ b/sequencer.c @@@ -2610,25 -2590,37 +2610,39 @@@ static int error_with_patch(struct comm const char *subject, int subject_len, struct replay_opts *opts, int exit_code, int to_amend) { - if (make_patch(commit, opts)) - return -1; + if (commit) { + if (make_patch(commit, opts)) + return -1; - } else if (copy_file(rebase_path_message(), git_path_merge_msg(), 0666)) ++ } else if (copy_file(rebase_path_message(), ++ git_path_merge_msg(the_repository), 0666)) + return error(_("unable to copy '%s' to '%s'"), - git_path_merge_msg(), rebase_path_message()); ++ git_path_merge_msg(the_repository), rebase_path_message()); if (to_amend) { if (intend_to_amend()) return -1; - fprintf(stderr, "You can amend the commit now, with\n" - "\n" - " git commit --amend %s\n" - "\n" - "Once you are satisfied with your changes, run\n" - "\n" - " git rebase --continue\n", gpg_sign_opt_quoted(opts)); + fprintf(stderr, + _("You can amend the commit now, with\n" + "\n" + " git commit --amend %s\n" + "\n" + "Once you are satisfied with your changes, run\n" + "\n" + " git rebase --continue\n"), + gpg_sign_opt_quoted(opts)); - } else if (exit_code) - fprintf_ln(stderr, _("Could not apply %s... %.*s"), - short_commit_name(commit), subject_len, subject); + } else if (exit_code) { + if (commit) - fprintf(stderr, "Could not apply %s... %.*s\n", - short_commit_name(commit), - subject_len, subject); ++ fprintf_ln(stderr, _("Could not apply %s... %.*s"), ++ short_commit_name(commit), subject_len, subject); + else + /* + * We don't have the hash of the parent so + * just print the line from the todo file. + */ - fprintf(stderr, "Could not merge %.*s\n", - subject_len, subject); ++ fprintf_ln(stderr, _("Could not merge %.*s"), ++ subject_len, subject); + } return exit_code; }