]> git.ipfire.org Git - thirdparty/git.git/commitdiff
name-rev: don't _peek() in create_or_update_name()
authorRené Scharfe <l.s.r@web.de>
Tue, 4 Feb 2020 21:20:42 +0000 (22:20 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 5 Feb 2020 18:24:15 +0000 (10:24 -0800)
Look up the commit slab slot for the commit once using
commit_rev_name_at() and populate it in case it is empty, instead of
checking for emptiness in a separate step using commit_rev_name_peek()
via get_commit_rev_name().

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/name-rev.c

index 3e22a0503eb69d820e2955d2608b8d42f9d15ca4..41aed436ca36219d5ee8a921dda13f09856a19bc 100644 (file)
@@ -39,11 +39,6 @@ static struct rev_name *get_commit_rev_name(const struct commit *commit)
        return slot ? *slot : NULL;
 }
 
-static void set_commit_rev_name(struct commit *commit, struct rev_name *name)
-{
-       *commit_rev_name_at(&rev_names, commit) = name;
-}
-
 static int is_better_name(struct rev_name *name,
                          timestamp_t taggerdate,
                          int distance,
@@ -86,15 +81,14 @@ static struct rev_name *create_or_update_name(struct commit *commit,
                                              int generation, int distance,
                                              int from_tag)
 {
-       struct rev_name *name = get_commit_rev_name(commit);
+       struct rev_name **slot = commit_rev_name_at(&rev_names, commit);
+       struct rev_name *name = *slot;
 
        if (name && !is_better_name(name, taggerdate, distance, from_tag))
                return NULL;
 
-       if (name == NULL) {
-               name = xmalloc(sizeof(*name));
-               set_commit_rev_name(commit, name);
-       }
+       if (!name)
+               name = *slot = xmalloc(sizeof(*name));
 
        name->tip_name = tip_name;
        name->taggerdate = taggerdate;