aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fsck.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/fsck.c b/fsck.c
index 8a6ecf31a..d3d81fcc1 100644
--- a/fsck.c
+++ b/fsck.c
@@ -537,12 +537,18 @@ static int fsck_commit_buffer(struct commit *commit, const char *buffer,
if (!skip_prefix(buffer, "tree ", &buffer))
return report(options, &commit->object, FSCK_MSG_MISSING_TREE, "invalid format - expected 'tree' line");
- if (get_sha1_hex(buffer, tree_sha1) || buffer[40] != '\n')
- return report(options, &commit->object, FSCK_MSG_BAD_TREE_SHA1, "invalid 'tree' line format - bad sha1");
+ if (get_sha1_hex(buffer, tree_sha1) || buffer[40] != '\n') {
+ err = report(options, &commit->object, FSCK_MSG_BAD_TREE_SHA1, "invalid 'tree' line format - bad sha1");
+ if (err)
+ return err;
+ }
buffer += 41;
while (skip_prefix(buffer, "parent ", &buffer)) {
- if (get_sha1_hex(buffer, sha1) || buffer[40] != '\n')
- return report(options, &commit->object, FSCK_MSG_BAD_PARENT_SHA1, "invalid 'parent' line format - bad sha1");
+ if (get_sha1_hex(buffer, sha1) || buffer[40] != '\n') {
+ err = report(options, &commit->object, FSCK_MSG_BAD_PARENT_SHA1, "invalid 'parent' line format - bad sha1");
+ if (err)
+ return err;
+ }
buffer += 41;
parent_line_count++;
}
@@ -551,11 +557,17 @@ static int fsck_commit_buffer(struct commit *commit, const char *buffer,
if (graft) {
if (graft->nr_parent == -1 && !parent_count)
; /* shallow commit */
- else if (graft->nr_parent != parent_count)
- return report(options, &commit->object, FSCK_MSG_MISSING_GRAFT, "graft objects missing");
+ else if (graft->nr_parent != parent_count) {
+ err = report(options, &commit->object, FSCK_MSG_MISSING_GRAFT, "graft objects missing");
+ if (err)
+ return err;
+ }
} else {
- if (parent_count != parent_line_count)
- return report(options, &commit->object, FSCK_MSG_MISSING_PARENT, "parent objects missing");
+ if (parent_count != parent_line_count) {
+ err = report(options, &commit->object, FSCK_MSG_MISSING_PARENT, "parent objects missing");
+ if (err)
+ return err;
+ }
}
if (!skip_prefix(buffer, "author ", &buffer))
return report(options, &commit->object, FSCK_MSG_MISSING_AUTHOR, "invalid format - expected 'author' line");