fsck --lost-found died when attempting to write out the empty blob. Avoid calling fwrite when the blob size is zero since the call to fwrite returns 0 objects written which fails the check and caused fsck to die. Signed-off-by: BJ Hargrave <bj@xxxxxxxxxxxxxx> --- builtin/fsck.c | 7 ++++--- t/t1420-lost-found.sh | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/builtin/fsck.c b/builtin/fsck.c index 5ae0366..ad6d713 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c @@ -232,9 +232,10 @@ static void check_unreachable_object(struct object *obj) char *buf = read_sha1_file(obj->sha1, &type, &size); if (buf) { - if (fwrite(buf, size, 1, f) != 1) - die_errno("Could not write '%s'", - filename); + if (size > 0) + if (fwrite(buf, size, 1, f) != 1) + die_errno("Could not write '%s'", + filename); free(buf); } } else diff --git a/t/t1420-lost-found.sh b/t/t1420-lost-found.sh index dc9e402..02323c9 100755 --- a/t/t1420-lost-found.sh +++ b/t/t1420-lost-found.sh @@ -8,7 +8,7 @@ test_description='Test fsck --lost-found' test_expect_success setup ' git config core.logAllRefUpdates 0 && - : > file1 && + echo x > file1 && git add file1 && test_tick && git commit -m initial && @@ -18,18 +18,21 @@ test_expect_success setup ' test_tick && git commit -m second && echo 3 > file3 && - git add file3 + : > file4 && + git add file3 file4 ' test_expect_success 'lost and found something' ' git rev-parse HEAD > lost-commit && - git rev-parse :file3 > lost-other && + git rev-parse :file3 > lost-other3 && + git rev-parse :file4 > lost-other4 && test_tick && git reset --hard HEAD^ && git fsck --lost-found && - test 2 = $(ls .git/lost-found/*/* | wc -l) && + test 3 = $(ls .git/lost-found/*/* | wc -l) && test -f .git/lost-found/commit/$(cat lost-commit) && - test -f .git/lost-found/other/$(cat lost-other) + test -f .git/lost-found/other/$(cat lost-other3) && + test -f .git/lost-found/other/$(cat lost-other4) ' test_done -- 1.7.6.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html