aboutsummaryrefslogtreecommitdiff
path: root/cache-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-04-23 09:47:17 -0700
committerJunio C Hamano <gitster@pobox.com>2008-04-23 10:02:44 -0700
commitedae5f0c20b7e71a717b59873ddb8eeddfa49b86 (patch)
tree697e01ec44ef6fa86e25a816d143e2a9400b662e /cache-tree.c
parent4f7ec7970874d09be162bc7f16415a0ec2d36ae5 (diff)
downloadgit-edae5f0c20b7e71a717b59873ddb8eeddfa49b86.tar.gz
git-edae5f0c20b7e71a717b59873ddb8eeddfa49b86.tar.xz
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.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/cache-tree.c b/cache-tree.c
index 50b35264f..cfe937b0f 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