@matheusbsbs / matheus-bagliano / commits / 766f9e39c0
Fork 0

name-rev: extract creating/updating a 'struct name_rev' into a helper

In a later patch in this series we'll want to do this in two places. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

SZEDER Gábor committed Nov 12, 2019 at 11:38 UTC 766f9e39c007f527c5ab63d65a0d8ff9d36e2a2e
1 file changed +27 -13
builtin/name-rev.c
+27 -13
@@ -79,12 +79,36 @@ static int is_better_name(struct rev_name *name,
79 return 0;
80 }
81
82 +static struct rev_name *create_or_update_name(struct commit *commit,
83 + const char *tip_name,
84 + timestamp_t taggerdate,
85 + int generation, int distance,
86 + int from_tag)
87 +{
88 + struct rev_name *name = get_commit_rev_name(commit);
89 +
90 + if (name == NULL) {
91 + name = xmalloc(sizeof(*name));
92 + set_commit_rev_name(commit, name);
93 + goto copy_data;
94 + } else if (is_better_name(name, taggerdate, distance, from_tag)) {
95 +copy_data:
96 + name->tip_name = tip_name;
97 + name->taggerdate = taggerdate;
98 + name->generation = generation;
99 + name->distance = distance;
100 + name->from_tag = from_tag;
101 +
102 + return name;
103 + } else
104 + return NULL;
105 +}
106 +
107 static void name_rev(struct commit *commit,
108 const char *tip_name, timestamp_t taggerdate,
109 int generation, int distance, int from_tag,
110 int deref)
111 {
87 - struct rev_name *name = get_commit_rev_name(commit);
112 struct commit_list *parents;
113 int parent_number = 1;
114 char *to_free = NULL;
@@ -101,18 +125,8 @@ static void name_rev(struct commit *commit,
125 die("generation: %d, but deref?", generation);
126 }
127
104 - if (name == NULL) {
105 - name = xmalloc(sizeof(*name));
106 - set_commit_rev_name(commit, name);
107 - goto copy_data;
108 - } else if (is_better_name(name, taggerdate, distance, from_tag)) {
109 -copy_data:
110 - name->tip_name = tip_name;
111 - name->taggerdate = taggerdate;
112 - name->generation = generation;
113 - name->distance = distance;
114 - name->from_tag = from_tag;
115 - } else {
128 + if (!create_or_update_name(commit, tip_name, taggerdate, generation,
129 + distance, from_tag)) {
130 free(to_free);
131 return;
132 }