From: Junio C Hamano Date: Sun, 1 Oct 2006 18:41:00 +0000 (-0700) Subject: Fix refs.c;:repack_without_ref() clean-up path X-Git-Tag: v1.4.4-rc1~44^2~17 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=26a063a10bca57f65d8fed6c4550a70d44a70b81;p=git.git Fix refs.c;:repack_without_ref() clean-up path 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 --- diff --git a/refs.c b/refs.c index 221eb3896..aa4c4e0b9 100644 --- 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); } +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; - struct lock_file packlock; packed_ref_list = get_packed_refs(); for (list = packed_ref_list; list; list = list->next) {