Thread (26 messages) read the whole thread 26 messages, 4 authors, 2025-01-14

Re: [PATCH 08/14] tree-diff: pass whole path string to path_appendnew()

From: Patrick Steinhardt <hidden>
Date: 2025-01-13 15:40:06

On Thu, Jan 09, 2025 at 03:49:07AM -0500, Jeff King wrote:
quoted hunk ↗ jump to hunk
diff --git a/tree-diff.c b/tree-diff.c
index 22fc2d8f8c..d2f8dd14a6 100644
--- a/tree-diff.c
+++ b/tree-diff.c
@@ -129,20 +129,18 @@ static int emit_diff_first_parent_only(struct diff_options *opt, struct combine_
  * and append it to paths list tail.
  */
 static struct combine_diff_path *path_appendnew(struct combine_diff_path *last,
-	int nparent, const struct strbuf *base, const char *path, int pathlen,
+	int nparent, const char *path, size_t len,
Sneaky, you also changed the type of `len` :) You might want to point
that out in the commit message.
quoted hunk ↗ jump to hunk
 	unsigned mode, const struct object_id *oid)
 {
 	struct combine_diff_path *p;
-	size_t len = st_add(base->len, pathlen);
 	size_t alloclen = combine_diff_path_size(nparent, len);
 
 	p = xmalloc(alloclen);
 	p->next = NULL;
 	last->next = p;
 
 	p->path = (char *)&(p->parent[nparent]);
-	memcpy(p->path, base->buf, base->len);
-	memcpy(p->path + base->len, path, pathlen);
+	memcpy(p->path, path, len);
 	p->path[len] = 0;
 	p->mode = mode;
 	oidcpy(&p->oid, oid ? oid : null_oid());
@@ -206,7 +204,10 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p,
 	if (emitthis) {
 		int keep;
 		struct combine_diff_path *pprev = p;
-		p = path_appendnew(p, nparent, base, path, pathlen, mode, oid);
+
+		strbuf_add(base, path, pathlen);
+		p = path_appendnew(p, nparent, base->buf, base->len, mode, oid);
+		strbuf_setlen(base, old_baselen);
 
 		for (i = 0; i < nparent; ++i) {
 			/*
Makes sense. And there is a single caller of `path_appendnew()`, only,
so no further changes should be required.

Patrick
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help