summaryrefslogtreecommitdiff
path: root/builtin/receive-pack.c
diff options
context:
space:
mode:
authorMartin Ågren <martin.agren@gmail.com>2018-05-09 20:55:38 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-05-10 05:54:45 (GMT)
commitb227586831ed393e1d60629bfedcef01be4b9c22 (patch)
treec58f4d54e1818bf4969d77840f47e893cee7b4de /builtin/receive-pack.c
parent3c6fad4a3fcc9a01dd3d9678360907271ad85920 (diff)
downloadgit-b227586831ed393e1d60629bfedcef01be4b9c22.zip
git-b227586831ed393e1d60629bfedcef01be4b9c22.tar.gz
git-b227586831ed393e1d60629bfedcef01be4b9c22.tar.bz2
lock_file: make function-local locks non-static
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. (This applies even if a user returns early, leaving a locked lock behind.) These `struct lock_file`s are local to their respective functions and we can drop their staticness. For good measure, I have inspected these sites and come to believe that they always release the lock, with the possible exception of bailing out using `die()` or `exit()` or by returning from a `cmd_foo()`. As pointed out by Jeff King, it would be bad if someone held on to a `struct lock_file *` for some reason. After some grepping, I agree with his findings: no-one appears to be doing that. Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/receive-pack.c')
-rw-r--r--builtin/receive-pack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 75e7f18..0c074b0 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -875,7 +875,7 @@ static void refuse_unconfigured_deny_delete_current(void)
static int command_singleton_iterator(void *cb_data, struct object_id *oid);
static int update_shallow_ref(struct command *cmd, struct shallow_info *si)
{
- static struct lock_file shallow_lock;
+ struct lock_file shallow_lock = LOCK_INIT;
struct oid_array extra = OID_ARRAY_INIT;
struct check_connected_options opt = CHECK_CONNECTED_INIT;
uint32_t mask = 1 << (cmd->index % 32);