Re: [PATCH 08/14] tree-diff: pass whole path string to path_appendnew()
From: Jeff King <hidden>
Date: 2025-01-14 09:26:59
On Mon, Jan 13, 2025 at 04:40:00PM +0100, Patrick Steinhardt wrote:
On Thu, Jan 09, 2025 at 03:49:07AM -0500, Jeff King wrote:quoted
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.
Sort of. The original took a (ptr,size_t) pair in the form of "base", and then also a (ptr,int) path. That matches what the caller has: "pathlen" comes from tree_entry(), which returns an int (it should probably become a size_t in the long run, but it has a lot of ripple effects if you change it). Now the caller handles path/pathlen itself here:
quoted
+ strbuf_add(base, path, pathlen);
So there is nothing left to pass in except a (ptr,size_t) pair. We could have continued passing those in as a strbuf, but calling it "base" doesn't make sense any more. The "int" is still there, but it just stays in the caller. In the original it becomes a size_t via passing to combine_diff_path_size(). In the new code, it happens when we feed it to strbuf_add(). -Peff