diff --git a/builtin-write-tree.c b/builtin-write-tree.c
index c3aac36024626b31a60baa52f9e596169024b03a..449a4d1b575b591aa07a40532649f9ea06eb6890 100644 (file)
--- a/builtin-write-tree.c
+++ b/builtin-write-tree.c
int entries, was_valid, newfd;
/* We can't free this memory, it becomes part of a linked list parsed atexit() */
- struct lock_file *lock_file = xmalloc(sizeof(struct lock_file));
+ struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
newfd = hold_lock_file_for_update(lock_file, get_index_file());
missing_ok, 0) < 0)
die("git-write-tree: error building trees");
if (0 <= newfd) {
- if (!write_cache(newfd, active_cache, active_nr))
+ if (!write_cache(newfd, active_cache, active_nr)
+ && !close(newfd))
commit_lock_file(lock_file);
}
/* Not being able to write is fine -- we are only interested