summaryrefslogtreecommitdiff
path: root/object-file.c
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-07-07 23:10:16 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-07-08 04:27:56 (GMT)
commit407532f82d3fdfd18d4ec276ddeb359e7c724aa6 (patch)
tree54a7842ae231458de15ed58c5e2f724bd5fc7bff /object-file.c
parentcf2dc1c238c6fd5f93c315a3045ccf95459701cd (diff)
downloadgit-407532f82d3fdfd18d4ec276ddeb359e7c724aa6.zip
git-407532f82d3fdfd18d4ec276ddeb359e7c724aa6.tar.gz
git-407532f82d3fdfd18d4ec276ddeb359e7c724aa6.tar.bz2
avoid strlen via strbuf_addstr in link_alt_odb_entry
We can save a few milliseconds (across 100K odbs) by using strbuf_addbuf() instead of strbuf_addstr() by passing `entry' as a strbuf pointer rather than a "const char *". Signed-off-by: Eric Wong <e@80x24.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object-file.c')
-rw-r--r--object-file.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/object-file.c b/object-file.c
index a13f49b..2dd70dd 100644
--- a/object-file.c
+++ b/object-file.c
@@ -567,18 +567,18 @@ static int alt_odb_usable(struct raw_object_store *o,
static void read_info_alternates(struct repository *r,
const char *relative_base,
int depth);
-static int link_alt_odb_entry(struct repository *r, const char *entry,
+static int link_alt_odb_entry(struct repository *r, const struct strbuf *entry,
const char *relative_base, int depth, const char *normalized_objdir)
{
struct object_directory *ent;
struct strbuf pathbuf = STRBUF_INIT;
khiter_t pos;
- if (!is_absolute_path(entry) && relative_base) {
+ if (!is_absolute_path(entry->buf) && relative_base) {
strbuf_realpath(&pathbuf, relative_base, 1);
strbuf_addch(&pathbuf, '/');
}
- strbuf_addstr(&pathbuf, entry);
+ strbuf_addbuf(&pathbuf, entry);
if (strbuf_normalize_path(&pathbuf) < 0 && relative_base) {
error(_("unable to normalize alternate object path: %s"),
@@ -669,7 +669,7 @@ static void link_alt_odb_entries(struct repository *r, const char *alt,
alt = parse_alt_odb_entry(alt, sep, &entry);
if (!entry.len)
continue;
- link_alt_odb_entry(r, entry.buf,
+ link_alt_odb_entry(r, &entry,
relative_base, depth, objdirbuf.buf);
}
strbuf_release(&entry);