handle_revision_arg: simplify commit reference lookups
authorJeff King <peff@peff.net>
Fri, 19 May 2017 12:48:46 +0000 (08:48 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 May 2017 01:59:27 +0000 (10:59 +0900)
The "dotdot" range parser avoids calling
lookup_commit_reference() if we are directly fed two
commits. But its casts are unnecessarily complex; that
function will just return a commit we pass into it.

Just calling the function all the time is much simpler, and
doesn't do any significant extra work (the object is already
parsed, and deref_tag() on a non-tag is a noop; we do incur
one extra lookup_object() call, but that's fairly trivial).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
revision.c
index 2bcd60a2bb06bb46e451a4b0b94b3213e892b551..dc3281290669c07e70c8c2909023d6fc1686e6fe 100644 (file)
@@ -1500,12 +1500,8 @@ int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsi
                                struct commit *a, *b;
                                struct commit_list *exclude;
 
-                               a = (a_obj->type == OBJ_COMMIT
-                                    ? (struct commit *)a_obj
-                                    : lookup_commit_reference(a_obj->oid.hash));
-                               b = (b_obj->type == OBJ_COMMIT
-                                    ? (struct commit *)b_obj
-                                    : lookup_commit_reference(b_obj->oid.hash));
+                               a = lookup_commit_reference(a_obj->oid.hash);
+                               b = lookup_commit_reference(b_obj->oid.hash);
                                if (!a || !b)
                                        goto missing;
                                exclude = get_merge_bases(a, b);