From: Johannes Schindelin Date: Wed, 25 Apr 2018 12:28:17 +0000 (+0200) Subject: sequencer: avoid using errno clobbered by rollback_lock_file() X-Git-Tag: v2.18.0-rc0~48^2~16 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/bf5c0571d6542d992380467c26cb7bdcab23fcb5?ds=sidebyside sequencer: avoid using errno clobbered by rollback_lock_file() As pointed out in a review of the `--rebase-merges` patch series, `rollback_lock_file()` clobbers errno. Therefore, we have to report the error message that uses errno before calling said function. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- diff --git a/sequencer.c b/sequencer.c index 5e3a50fafc..674e26bf82 100644 --- a/sequencer.c +++ b/sequencer.c @@ -346,12 +346,14 @@ static int write_message(const void *buf, size_t len, const char *filename, if (msg_fd < 0) return error_errno(_("could not lock '%s'"), filename); if (write_in_full(msg_fd, buf, len) < 0) { + error_errno(_("could not write to '%s'"), filename); rollback_lock_file(&msg_file); - return error_errno(_("could not write to '%s'"), filename); + return -1; } if (append_eol && write(msg_fd, "\n", 1) < 0) { + error_errno(_("could not write eol to '%s'"), filename); rollback_lock_file(&msg_file); - return error_errno(_("could not write eol to '%s'"), filename); + return -1; } if (commit_lock_file(&msg_file) < 0) return error(_("failed to finalize '%s'"), filename); @@ -2125,9 +2127,9 @@ static int save_head(const char *head) written = write_in_full(fd, buf.buf, buf.len); strbuf_release(&buf); if (written < 0) { + error_errno(_("could not write to '%s'"), git_path_head_file()); rollback_lock_file(&head_lock); - return error_errno(_("could not write to '%s'"), - git_path_head_file()); + return -1; } if (commit_lock_file(&head_lock) < 0) return error(_("failed to finalize '%s'"), git_path_head_file());