X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-write-tree.c;h=449a4d1b575b591aa07a40532649f9ea06eb6890;hb=e1447e38c00bdc1904458cfabb4bb3ffb678a271;hp=c3aac36024626b31a60baa52f9e596169024b03a;hpb=275fb96ae65b0886d9e6e93a421453eb6d13cb9f;p=git.git diff --git a/builtin-write-tree.c b/builtin-write-tree.c index c3aac3602..449a4d1b5 100644 --- a/builtin-write-tree.c +++ b/builtin-write-tree.c @@ -16,7 +16,7 @@ int write_tree(unsigned char *sha1, int missing_ok, const char *prefix) 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()); @@ -35,7 +35,8 @@ int write_tree(unsigned char *sha1, int missing_ok, const char *prefix) 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