]> git.ipfire.org Git - thirdparty/git.git/commitdiff
tree-diff: clear parent array in path_appendnew()
authorJeff King <peff@peff.net>
Thu, 9 Jan 2025 08:33:10 +0000 (03:33 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Jan 2025 18:05:50 +0000 (10:05 -0800)
All of the other functions which allocate a combine_diff_path struct
zero out the parent array, but this code path does not. There's no bug,
since our caller will fill in most of the fields. But leaving the unused
fields (like combine_diff_parent.path) uninitialized makes working with
the struct more error-prone than it needs to be.

Let's just zero the parent field to be consistent with the
combine_diff_path_new() allocator.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
tree-diff.c

index d9237ffd9bf6fe2579277ed97f1628f3b863ccad..24f7b5912c91f7a1c461c7b11ea2cad75ae19177 100644 (file)
@@ -151,8 +151,6 @@ static int emit_diff_first_parent_only(struct diff_options *opt, struct combine_
  *     process(p);
  *     p = pprev;
  *     ; don't forget to free tail->next in the end
- *
- * p->parent[] remains uninitialized.
  */
 static struct combine_diff_path *path_appendnew(struct combine_diff_path *last,
        int nparent, const struct strbuf *base, const char *path, int pathlen,
@@ -187,6 +185,8 @@ static struct combine_diff_path *path_appendnew(struct combine_diff_path *last,
        p->mode = mode;
        oidcpy(&p->oid, oid ? oid : null_oid());
 
+       memset(p->parent, 0, sizeof(p->parent[0]) * nparent);
+
        return p;
 }