diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-04-23 09:47:17 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-04-23 10:02:44 -0700 |
commit | edae5f0c20b7e71a717b59873ddb8eeddfa49b86 (patch) | |
tree | 697e01ec44ef6fa86e25a816d143e2a9400b662e /cache-tree.c | |
parent | 4f7ec7970874d09be162bc7f16415a0ec2d36ae5 (diff) | |
download | git-edae5f0c20b7e71a717b59873ddb8eeddfa49b86.tar.gz |
write-tree: properly detect failure to write tree objects
Tomasz Fortuna reported that "git commit" does not error out properly when
it cannot write tree objects out. "git write-tree" shares the same issue,
as the failure to notice the error is deep in the logic to write tree
objects out recursively.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'cache-tree.c')
-rw-r--r-- | cache-tree.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/cache-tree.c b/cache-tree.c index 50b35264fd..cfe937b0f1 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -341,8 +341,11 @@ static int update_one(struct cache_tree *it, if (dryrun) hash_sha1_file(buffer.buf, buffer.len, tree_type, it->sha1); - else - write_sha1_file(buffer.buf, buffer.len, tree_type, it->sha1); + else if (write_sha1_file(buffer.buf, buffer.len, tree_type, it->sha1)) { + strbuf_release(&buffer); + return -1; + } + strbuf_release(&buffer); it->entry_count = i; #if DEBUG |