In a later patch in this series we'll want to do this in two places.

Signed-off-by: SZEDER Gábor <szeder....@gmail.com>
---
 builtin/name-rev.c | 40 +++++++++++++++++++++++++++-------------
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index dec2228cc7..cb8ac2fa64 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -75,12 +75,36 @@ static int is_better_name(struct rev_name *name,
        return 0;
 }
 
+static struct rev_name *create_or_update_name(struct commit *commit,
+                                             const char *tip_name,
+                                             timestamp_t taggerdate,
+                                             int generation, int distance,
+                                             int from_tag)
+{
+       struct rev_name *name = get_commit_rev_name(commit);
+
+       if (name == NULL) {
+               name = xmalloc(sizeof(*name));
+               set_commit_rev_name(commit, name);
+               goto copy_data;
+       } else if (is_better_name(name, taggerdate, distance, from_tag)) {
+copy_data:
+               name->tip_name = tip_name;
+               name->taggerdate = taggerdate;
+               name->generation = generation;
+               name->distance = distance;
+               name->from_tag = from_tag;
+
+               return name;
+       } else
+               return NULL;
+}
+
 static void name_rev(struct commit *commit,
                const char *tip_name, timestamp_t taggerdate,
                int generation, int distance, int from_tag,
                int deref)
 {
-       struct rev_name *name = get_commit_rev_name(commit);
        struct commit_list *parents;
        int parent_number = 1;
        char *to_free = NULL;
@@ -97,18 +121,8 @@ static void name_rev(struct commit *commit,
                        die("generation: %d, but deref?", generation);
        }
 
-       if (name == NULL) {
-               name = xmalloc(sizeof(*name));
-               set_commit_rev_name(commit, name);
-               goto copy_data;
-       } else if (is_better_name(name, taggerdate, distance, from_tag)) {
-copy_data:
-               name->tip_name = tip_name;
-               name->taggerdate = taggerdate;
-               name->generation = generation;
-               name->distance = distance;
-               name->from_tag = from_tag;
-       } else {
+       if (!create_or_update_name(commit, tip_name, taggerdate, generation,
+                                  distance, from_tag)) {
                free(to_free);
                return;
        }
-- 
2.23.0.331.g4e51dcdf11

Reply via email to