summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blob.c1
-rw-r--r--fsck-cache.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/blob.c b/blob.c
index 35031af62b..f79f5abd00 100644
--- a/blob.c
+++ b/blob.c
@@ -12,7 +12,6 @@ struct blob *lookup_blob(unsigned char *sha1)
memset(ret, 0, sizeof(struct blob));
created_object(sha1, &ret->object);
ret->object.type = blob_type;
- ret->object.parsed = 1;
return ret;
}
if (obj->parsed && obj->type != blob_type) {
diff --git a/fsck-cache.c b/fsck-cache.c
index 96b8eb1611..985adb68bb 100644
--- a/fsck-cache.c
+++ b/fsck-cache.c
@@ -60,11 +60,19 @@ static int fsck_commit(unsigned char *sha1, void *data, unsigned long size)
return 0;
}
+static int fsck_blob(unsigned char *sha1, void *data, unsigned long size)
+{
+ struct blob *blob = lookup_blob(sha1);
+ blob->object.parsed = 1;
+ return 0;
+}
+
static int fsck_entry(unsigned char *sha1, char *tag, void *data,
unsigned long size)
{
if (!strcmp(tag, "blob")) {
- lookup_blob(sha1); /* Nothing to check; but notice it. */
+ if (fsck_blob(sha1, data, size) < 0)
+ return -1;
} else if (!strcmp(tag, "tree")) {
if (fsck_tree(sha1, data, size) < 0)
return -1;