commit_lock_file(): if rename() fails, we should not truncate the name of the lockfile. This file should be deleted by rollback_lock_file() or remove_lock_file(). commit_locked_index(): call close_lock_file() when alternate_index_output is set and handle rename() failures like commit_lock_file(). --- lockfile.c | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lockfile.c b/lockfile.c index bcc4786..e8e5dbb 100644 --- a/lockfile.c +++ b/lockfile.c @@ -171,15 +171,16 @@ int close_lock_file(struct lock_file *lk) int commit_lock_file(struct lock_file *lk) { char result_file[PATH_MAX]; - int i; + size_t i; if (lk->fd >= 0 && close_lock_file(lk)) return -1; strcpy(result_file, lk->filename); i = strlen(result_file) - 5; /* .lock */ result_file[i] = 0; - i = rename(lk->filename, result_file); + if (rename(lk->filename, result_file)) + return -1; lk->filename[0] = 0; - return i; + return 0; } int hold_locked_index(struct lock_file *lk, int die_on_error) @@ -195,9 +196,12 @@ void set_alternate_index_output(const char *name) int commit_locked_index(struct lock_file *lk) { if (alternate_index_output) { - int result = rename(lk->filename, alternate_index_output); + if (lk->fd >= 0 && close_lock_file(lk)) + return -1; + if (rename(lk->filename, alternate_index_output)) + return -1; lk->filename[0] = 0; - return result; + return 0; } else return commit_lock_file(lk); -- 1.5.4.rc3.14.g44397-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html