combine-diff: drop public declaration of combine_diff_path_size()

We want callers to use combine_diff_path_new() to allocate structs,
rather than using combine_diff_path_size() and xmalloc(). That gives us
more consistency over the initialization of the fields.

Now that the final external user of combine_diff_path_size() is gone, we
can stop declaring it publicly. And since our constructor is the only
caller, we can just inline it there.

Breaking the size computation into two parts also lets us reuse the
intermediate multiplication result of the parent length, since we need
to know it to perform our memset(). The result is a little easier to
read.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2025-01-09 03:50:19 -05:00
committed by Junio C Hamano
parent b20d7d348c
commit 69f6dea44c
2 changed files with 3 additions and 5 deletions

View File

@ -1658,8 +1658,9 @@ struct combine_diff_path *combine_diff_path_new(const char *path,
size_t num_parents)
{
struct combine_diff_path *p;
size_t parent_len = st_mult(sizeof(p->parent[0]), num_parents);
p = xmalloc(combine_diff_path_size(num_parents, path_len));
p = xmalloc(st_add4(sizeof(*p), path_len, 1, parent_len));
p->path = (char *)&(p->parent[num_parents]);
memcpy(p->path, path, path_len);
p->path[path_len] = 0;
@ -1667,7 +1668,7 @@ struct combine_diff_path *combine_diff_path_new(const char *path,
p->mode = mode;
oidcpy(&p->oid, oid);
memset(p->parent, 0, sizeof(p->parent[0]) * num_parents);
memset(p->parent, 0, parent_len);
return p;
}