diff --git a/fsck-cache.c b/fsck-cache.c index fb0d82f3320b7971d50d73893d777e3ddf1bd73b..e328cec75d96788622406e6394a67e7a0a96ce7c 100644 --- a/fsck-cache.c +++ b/fsck-cache.c @@ -295,14 +295,12 @@ int main(int argc, char **argv) continue; if (!get_sha1(arg, head_sha1)) { - struct commit *commit = lookup_commit(head_sha1); - struct object *obj; + struct object *obj = lookup_object(head_sha1); - /* Error is printed by lookup_commit(). */ - if (!commit) + /* Error is printed by lookup_object(). */ + if (!obj) continue; - obj = &commit->object; obj->used = 1; mark_reachable(obj, REACHABLE); heads++; diff --git a/tag.c b/tag.c index 9eade750d373791420739e494b8f0f0d7367675f..3a71dd416ad18d86ed28ed6593e4588151cc43ea 100644 --- a/tag.c +++ b/tag.c @@ -49,6 +49,8 @@ int parse_tag(struct tag *item) goto err; item->tagged = parse_object(object); + if (item->tagged) + add_ref(&item->object, item->tagged); type_line = data + 48; if (memcmp("\ntype ", type_line-1, 6))