From e2ac7cb5fbcf1407003aa07cdcd14141527ea2e3 Mon Sep 17 00:00:00 2001 From: Sam Vilain Date: Wed, 6 Jun 2007 22:25:17 +1200 Subject: Don't assume tree entries that are not dirs are blobs When scanning the trees in track_tree_refs() there is a "lazy" test that assumes that entries are either directories or files. Don't do that. Signed-off-by: Junio C Hamano --- tree.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'tree.c') diff --git a/tree.c b/tree.c index e4a39aa3c3..e946dac069 100644 --- a/tree.c +++ b/tree.c @@ -173,8 +173,13 @@ static void track_tree_refs(struct tree *item) continue; if (S_ISDIR(entry.mode)) obj = &lookup_tree(entry.sha1)->object; - else + else if (S_ISREG(entry.mode) || S_ISLNK(entry.mode)) obj = &lookup_blob(entry.sha1)->object; + else { + warning("in tree %s: entry %s has bad mode %.6o\n", + sha1_to_hex(item->object.sha1), entry.path, entry.mode); + obj = lookup_unknown_object(entry.sha1); + } refs->ref[i++] = obj; } set_object_refs(&item->object, refs); -- cgit v1.2.3