From: Junio C Hamano Date: Mon, 30 Sep 2019 04:19:26 +0000 (+0900) Subject: Merge branch 'rs/parse-tree-indirect' X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/430439536bd8a334188460bbb9da9ce81ef95630?hp=991fd97b9ab1d15e11c5c9b867c5e32e4232559b Merge branch 'rs/parse-tree-indirect' Code cleanup. * rs/parse-tree-indirect: tree: simplify parse_tree_indirect() --- diff --git a/tree.c b/tree.c index 4720945e6a..1466bcc6a8 100644 --- a/tree.c +++ b/tree.c @@ -244,19 +244,7 @@ void free_tree_buffer(struct tree *tree) struct tree *parse_tree_indirect(const struct object_id *oid) { - struct object *obj = parse_object(the_repository, oid); - do { - if (!obj) - return NULL; - if (obj->type == OBJ_TREE) - return (struct tree *) obj; - else if (obj->type == OBJ_COMMIT) - obj = &(get_commit_tree(((struct commit *)obj))->object); - else if (obj->type == OBJ_TAG) - obj = ((struct tag *) obj)->tagged; - else - return NULL; - if (!obj->parsed) - parse_object(the_repository, &obj->oid); - } while (1); + struct repository *r = the_repository; + struct object *obj = parse_object(r, oid); + return (struct tree *)repo_peel_to_type(r, NULL, 0, obj, OBJ_TREE); }