[PATCH v4 10/10] refs: drop local buffer in `refs_compute_filesystem_location()`
From: Patrick Steinhardt <hidden>
Date: 2026-06-19 11:28:30
Subsystem:
the rest · Maintainer:
Linus Torvalds
We're using a local buffer in `refs_compute_filesystem_location()` that is only used so that we can fill it and then call `strbuf_realpath()` on its result. This roundtrip isn't necessary though: `strbuf_realpath()` already knows to use a single buffer as both input and output at the same time. So all this does is to add a bit of confusion and an extra memory allocation. Drop the local buffer. Signed-off-by: Patrick Steinhardt <redacted> --- refs.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/refs.c b/refs.c
index f242e6ca96..582dbeff0a 100644
--- a/refs.c
+++ b/refs.c@@ -3570,8 +3570,6 @@ void refs_compute_filesystem_location(const char *gitdir, const char *payload, bool *is_worktree, struct strbuf *refdir, struct strbuf *ref_common_dir) { - struct strbuf sb = STRBUF_INIT; - *is_worktree = get_common_dir_noenv(ref_common_dir, gitdir); if (!payload) {
@@ -3585,8 +3583,8 @@ void refs_compute_filesystem_location(const char *gitdir, const char *payload, } if (!is_absolute_path(payload)) { - strbuf_addf(&sb, "%s/%s", ref_common_dir->buf, payload); - strbuf_realpath(ref_common_dir, sb.buf, 1); + strbuf_addf(ref_common_dir, "/%s", payload); + strbuf_realpath(ref_common_dir, ref_common_dir->buf, 1); } else { strbuf_realpath(ref_common_dir, payload, 1); }
@@ -3599,6 +3597,4 @@ void refs_compute_filesystem_location(const char *gitdir, const char *payload, BUG("worktree path does not contain slash"); strbuf_addf(refdir, "/worktrees/%s", wt_id + 1); } - - strbuf_release(&sb); }
--
2.55.0.rc1.722.g2b3ac350e6.dirty