lockfile: unlock file if lockfile permissions cannot be adjusted

If the call to adjust_shared_perm() fails, lock_file returns -1, which
to the caller looks like any other failure to lock the file.  So in
this case, roll back the lockfile before returning so that the lock
file is deleted immediately and the lockfile object is left in a
predictable state (namely, unlocked).  Previously, the lockfile was
retained until process cleanup in this situation.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty 2014-10-01 12:28:11 +02:00 коммит произвёл Junio C Hamano
Родитель 26f5d3b65f
Коммит 41dd4ffaf9
1 изменённых файлов: 1 добавлений и 0 удалений

Просмотреть файл

@ -153,6 +153,7 @@ static int lock_file(struct lock_file *lk, const char *path, int flags)
int save_errno = errno;
error("cannot fix permission bits on %s",
lk->filename);
rollback_lock_file(lk);
errno = save_errno;
return -1;
}