From: Michael Haggerty Date: Tue, 01 Apr 2014 15:58:14 GMT Subject: [PATCH 06/22] hold_lock_file_for_append(): release lock on errors Message-ID: <1396367910-7299-7-git-send-email-mhagger@alum.mit.edu> In-Reply-To: <1396367910-7299-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 1928e5e..e679e4c 100644 --- a/lockfile.c +++ b/lockfile.c @@ -212,13 +212,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; -- 1.9.0