X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=tree.c;h=2432f09a0259613b055a5ffed020dc56abc79f12;hb=93c36dcd0a4f6373e3a02a8505046801106ddb85;hp=ca800a85f771be1bd10d6575d93ca05bd3fc381c;hpb=1c9da46da4fe5cf99c5f6ab251419d0f412ecfba;p=git.git diff --git a/tree.c b/tree.c index ca800a85..2432f09a 100644 --- a/tree.c +++ b/tree.c @@ -73,7 +73,7 @@ int read_tree(void *buffer, unsigned long size, int stage) return read_tree_recursive(buffer, size, "", 0, stage); } -struct tree *lookup_tree(unsigned char *sha1) +struct tree *lookup_tree(const unsigned char *sha1) { struct object *obj = lookup_object(sha1); if (!obj) { @@ -83,6 +83,8 @@ struct tree *lookup_tree(unsigned char *sha1) ret->object.type = tree_type; return ret; } + if (!obj->type) + obj->type = tree_type; if (obj->type != tree_type) { error("Object %s is a %s, not a tree", sha1_to_hex(sha1), obj->type); @@ -131,7 +133,7 @@ int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size) } if (obj) add_ref(&item->object, obj); - + entry->parent = NULL; /* needs to be filled by the user */ *list_p = entry; list_p = &entry->next; }