diff options
author | Martin Ågren <martin.agren@gmail.com> | 2018-05-09 22:55:39 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-05-10 14:55:40 +0900 |
commit | 0fa5a2ed8d9f6d987f1ea479fe8ea56a26b89303 (patch) | |
tree | 19f1b29e8f3972f281423aa35c9d5711829f1e02 /t/helper | |
parent | lock_file: make function-local locks non-static (diff) | |
download | tgif-0fa5a2ed8d9f6d987f1ea479fe8ea56a26b89303.tar.xz |
lock_file: move static locks into functions
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.)
Each of these `struct lock_file`s is used from within a single function.
Move them into the respective functions to make the scope clearer and
drop the 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.
After this commit, the remaining occurrences of "static struct
lock_file" are locks that are used from within different functions. That
is, they need to remain static. (Short of more intrusive changes like
passing around pointers to non-static locks.)
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/helper')
-rw-r--r-- | t/helper/test-scrap-cache-tree.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/t/helper/test-scrap-cache-tree.c b/t/helper/test-scrap-cache-tree.c index d2a63bea43..34596201d4 100644 --- a/t/helper/test-scrap-cache-tree.c +++ b/t/helper/test-scrap-cache-tree.c @@ -3,10 +3,10 @@ #include "tree.h" #include "cache-tree.h" -static struct lock_file index_lock; - int cmd_main(int ac, const char **av) { + struct lock_file index_lock = LOCK_INIT; + setup_git_directory(); hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); if (read_cache() < 0) |