Change a use of the object_as_type() function introduced in 8ff226a9d5e (add object_as_type helper for casting objects, 2014-07-13) to instead assume that we're not dealing with OBJ_NONE (or OBJ_BAD) from deref_tag(). This makes this code easier to read, as the reader isn't wondering why the function would need to deal with that. We're simply doing a check of OBJ_{COMMIT,TREE,BLOB,TAG} here, not the bare-bones initialization object_as_type() might be called on to do. Even though we can read deref_tag() and see that it won't return OBJ_NONE and friends, let's add a BUG() assertion here to help future maintenance. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> --- commit.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/commit.c b/commit.c index 3d7f1fba0c..c3bc6cbec4 100644 --- a/commit.c +++ b/commit.c @@ -31,13 +31,22 @@ const char *commit_type = "commit"; struct commit *lookup_commit_reference_gently(struct repository *r, const struct object_id *oid, int quiet) { - struct object *obj = deref_tag(r, - parse_object(r, oid), - NULL, 0); + struct object *tmp = parse_object(r, oid); + struct object *obj = deref_tag(r, tmp, NULL, 0); if (!obj) return NULL; - return object_as_type(obj, OBJ_COMMIT, quiet); + + if (obj->type <= 0) + BUG("should have initialized obj->type = OBJ_{COMMIT,TREE,BLOB,TAG} from deref_tag()"); + if (obj->type != OBJ_COMMIT) { + if (!quiet) { + enum object_type have = obj->type; + oid_is_type_or_error(oid, OBJ_COMMIT, &have); + } + return NULL; + } + return (struct commit *)obj; } struct commit *lookup_commit_reference(struct repository *r, const struct object_id *oid) -- 2.31.1.723.ga5d7868e4a