[PATCH v8 01/16] sequencer: avoid using errno clobbered by rollback_lock_file()
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Apr 21, 2018, 10:30 UTC
- Message-ID
- <ae9847669b70282a0e17e46030b5c4e609d73923.1524306546.git.johannes.schindelin@gmx.de>
- In-Reply-To
- <cover.1524306546.git.johannes.schindelin@gmx.de>
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 <johannes.schindelin@gmx.de> --- sequencer.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/sequencer.c b/sequencer.c index 667f35ebdff..096e6d241e0 100644 --- a/sequencer.c +++ b/sequencer.c @@ -345,12 +345,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); @@ -2119,9 +2121,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());
-- 2.17.0.windows.1.15.gaa56ade3205