From: Michael Haggerty Date: Sat, 06 Sep 2014 07:50:21 GMT Subject: [PATCH v4 07/32] hold_lock_file_for_append(): release lock on errors Message-ID: <1409989846-22401-8-git-send-email-mhagger@alum.mit.edu> In-Reply-To: <1409989846-22401-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 --- lockfile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lockfile.c b/lockfile.c index d4f165d..983c3ec 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