[PATCH v7 08/38] hold_lock_file_for_append(): release lock on errors
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Oct 1, 2014, 10:28 UTC
- Message-ID
- <1412159322-2622-9-git-send-email-mhagger@alum.mit.edu>
- In-Reply-To
- <1412159322-2622-1-git-send-email-mhagger@alum.mit.edu>
If there is an error copying the old contents to the lockfile, roll back the lockfile before exiting so that the lockfile is not held until process cleanup.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> --- lockfile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lockfile.c b/lockfile.c index d74de8d..f4ce79b 100644 --- a/lockfile.c +++ b/lockfile.c @@ -219,13 +219,13 @@ int hold_lock_file_for_append(struct lock_file *lk, const char *path, int flags) if (errno != ENOENT) { if (flags & LOCK_DIE_ON_ERROR) die("cannot open '%s' for copying", path); - close(fd); + rollback_lock_file(lk); return error("cannot open '%s' for copying", path); } } else if (copy_fd(orig_fd, fd)) { if (flags & LOCK_DIE_ON_ERROR) exit(128); - close(fd); + rollback_lock_file(lk); return -1; } return fd;
-- 2.1.0