From: Johannes Sixt Date: Wed, 23 Nov 2011 08:49:38 +0000 (+0100) Subject: Fix revert --abort on Windows X-Git-Tag: v1.7.8-rc4~4 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=2a4037d0a745134a3b94cb3d60d2793a26bd9027;p=git.git Fix revert --abort on Windows On Windows, it is not possible to rename or remove a directory that has open files. 'revert --abort' renamed .git/sequencer when it still had .git/sequencer/head open. Close the file as early as possible to allow the rename operation on Windows. Signed-off-by: Johannes Sixt Acked-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- diff --git a/builtin/revert.c b/builtin/revert.c index 9b9b2e574..c0b259225 100644 --- a/builtin/revert.c +++ b/builtin/revert.c @@ -931,8 +931,10 @@ static int sequencer_rollback(struct replay_opts *opts) if (strbuf_getline(&buf, f, '\n')) { error(_("cannot read %s: %s"), filename, ferror(f) ? strerror(errno) : _("unexpected end of file")); + fclose(f); goto fail; } + fclose(f); if (get_sha1_hex(buf.buf, sha1) || buf.buf[40] != '\0') { error(_("stored pre-cherry-pick HEAD file '%s' is corrupt"), filename); @@ -941,11 +943,9 @@ static int sequencer_rollback(struct replay_opts *opts) if (reset_for_rollback(sha1)) goto fail; strbuf_release(&buf); - fclose(f); return 0; fail: strbuf_release(&buf); - fclose(f); return -1; }