refs.c: do not die if locking fails in `delete_pseudoref()`
commit3c6fad4a3fcc9a01dd3d9678360907271ad85920
authorMartin Ågren <martin.agren@gmail.com>
Wed, 9 May 2018 20:55:37 +0000 (9 22:55 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 May 2018 05:54:45 +0000 (10 14:54 +0900)
treedc37e889e09f40b8b5f72d9838d5ce6c93cd4413
parent010845157ae748bc35af84cfedf0803379c6e02b
refs.c: do not die if locking fails in `delete_pseudoref()`

After taking the lock we check whether we got it and die otherwise. But
since we take the lock using `LOCK_DIE_ON_ERROR`, we would already have
died.

Considering the choice between dropping the dead code and dropping the
flag, let's go for option number three: Drop the flag, write an error
instead of dying, then return -1. This function already returns -1 for
another error, so the caller (or rather, its callers) should be able to
handle this. There is some inconsistency around how we handle errors in
this function and elsewhere in this file, but let's take this small step
towards gentle error-reporting now and leave the rest for another time.

While at it, make the lock non-static and reduce its scope. (Placing
`struct lock_file`s on the stack used to be a bad idea, because the
temp- and lockfile-machinery would keep a pointer into the struct. But
after 076aa2cbd (tempfile: auto-allocate tempfiles on heap, 2017-09-05),
we can safely have lockfiles on the stack.)

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c