Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Fix refs.c;:repack_without_ref() clean-up path
author
Junio C Hamano
<junkio@cox.net>
Sun, 1 Oct 2006 18:41:00 +0000
(11:41 -0700)
committer
Junio C Hamano
<junkio@cox.net>
Sun, 1 Oct 2006 18:41:00 +0000
(11:41 -0700)
The function repack_without_ref() passes a lock-file structure
on the stack to hold_lock_file_for_update(), which in turn
registers it to be cleaned up via atexit(). This is a big
no-no.
This is the same bug James Bottomley fixed with commit
31f584c242e7af28018ff920b6c8d1952beadbd4
.
Signed-off-by: Junio C Hamano <junkio@cox.net>
refs.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
14c8a68
)
diff --git
a/refs.c
b/refs.c
index 221eb3896ed10ff75b86ae955454636dd70f71c6..aa4c4e0b94585835298ad1785eee77462760e2d6 100644
(file)
--- a/
refs.c
+++ b/
refs.c
@@
-621,12
+621,13
@@
struct ref_lock *lock_any_ref_for_update(const char *ref, const unsigned char *o
return lock_ref_sha1_basic(ref, old_sha1, NULL);
}
return lock_ref_sha1_basic(ref, old_sha1, NULL);
}
+static struct lock_file packlock;
+
static int repack_without_ref(const char *refname)
{
struct ref_list *list, *packed_ref_list;
int fd;
int found = 0;
static int repack_without_ref(const char *refname)
{
struct ref_list *list, *packed_ref_list;
int fd;
int found = 0;
- struct lock_file packlock;
packed_ref_list = get_packed_refs();
for (list = packed_ref_list; list; list = list->next) {
packed_ref_list = get_packed_refs();
for (list = packed_ref_list; list; list = list->next) {