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
31f584c242.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-10-01 11:41:00 -07:00
Родитель 14c8a681f7
Коммит 26a063a10b
1 изменённых файлов: 2 добавлений и 1 удалений

3
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) {