Skip to content
Snippets Groups Projects
Commit e2ac7cb5 authored by Sam Vilain's avatar Sam Vilain Committed by Junio C Hamano
Browse files

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: default avatarJunio C Hamano <gitster@pobox.com>
parent 23fcdc79
Branches
Tags
No related merge requests found
...@@ -160,8 +160,11 @@ struct object *parse_object_buffer(const unsigned char *sha1, enum object_type t ...@@ -160,8 +160,11 @@ struct object *parse_object_buffer(const unsigned char *sha1, enum object_type t
parse_tag_buffer(tag, buffer, size); parse_tag_buffer(tag, buffer, size);
obj = &tag->object; obj = &tag->object;
} else { } else {
warning("object %s has unknown type id %d\n", sha1_to_hex(sha1), type);
obj = NULL; obj = NULL;
} }
if (obj && obj->type == OBJ_NONE)
obj->type = type;
*eaten_p = eaten; *eaten_p = eaten;
return obj; return obj;
} }
......
...@@ -173,8 +173,13 @@ static void track_tree_refs(struct tree *item) ...@@ -173,8 +173,13 @@ static void track_tree_refs(struct tree *item)
continue; continue;
if (S_ISDIR(entry.mode)) if (S_ISDIR(entry.mode))
obj = &lookup_tree(entry.sha1)->object; obj = &lookup_tree(entry.sha1)->object;
else else if (S_ISREG(entry.mode) || S_ISLNK(entry.mode))
obj = &lookup_blob(entry.sha1)->object; 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; refs->ref[i++] = obj;
} }
set_object_refs(&item->object, refs); set_object_refs(&item->object, refs);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment