From: Michael Haggerty Date: Tue, 16 Sep 2014 19:33:28 GMT Subject: [PATCH v5 07/35] hold_lock_file_for_append(): release lock on errors Message-ID: <1410896036-12750-8-git-send-email-mhagger@alum.mit.edu> In-Reply-To: <1410896036-12750-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