tree-diff: clear parent array in path_appendnew()

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>

Jeff King committed Jan 9, 2025 at 03:33 UTC 5173099aae25bedf7a87225891d124569cba7076
1 file changed +2 -2
tree-diff.c
+2 -2
@@ -151,8 +151,6 @@ static int emit_diff_first_parent_only(struct diff_options *opt, struct combine_
151 * process(p);
152 * p = pprev;
153 * ; don't forget to free tail->next in the end
154 - *
155 - * p->parent[] remains uninitialized.
154 */
155 static struct combine_diff_path *path_appendnew(struct combine_diff_path *last,
156 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,
185 p->mode = mode;
186 oidcpy(&p->oid, oid ? oid : null_oid());
187
188 + memset(p->parent, 0, sizeof(p->parent[0]) * nparent);
189 +
190 return p;
191 }
192