fsck: make fsck_tag() warn-friendly
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Mon, 22 Jun 2015 15:26:30 +0000 (17:26 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 23 Jun 2015 21:27:35 +0000 (14:27 -0700)
When fsck_tag() identifies a problem with the commit, it should try
to make it possible to continue checking the commit object, in case the
user wants to demote the detected errors to mere warnings.

Just like fsck_commit(), there are certain problems that could hide other
issues with the same tag object. For example, if the 'type' line is not
encountered in the correct position, the 'tag' line – if there is any –
would not be handled at all.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
fsck.c
diff --git a/fsck.c b/fsck.c
index 8dc5867ec95b551f72be8ae03015c31f29935806..6635e15b1028ed55ce5eabf62a90a69dc38c1c1b 100644 (file)
--- a/fsck.c
+++ b/fsck.c
@@ -643,7 +643,8 @@ static int fsck_tag_buffer(struct tag *tag, const char *data,
        }
        if (get_sha1_hex(buffer, sha1) || buffer[40] != '\n') {
                ret = report(options, &tag->object, FSCK_MSG_BAD_OBJECT_SHA1, "invalid 'object' line format - bad sha1");
-               goto done;
+               if (ret)
+                       goto done;
        }
        buffer += 41;