1
0
mirror of https://github.com/git/git.git synced 2024-09-24 16:11:00 +02:00

sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()

Pass the target strbuf to the callback function grab_nth_branch_switch()
by reference so that it can add the result string directly instead of
having it put the string into a temporary strbuf first.  This gets rid
of an extra allocation and a string copy.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2019-09-18 18:35:38 +02:00 committed by Junio C Hamano
parent 5fa0f5238b
commit 4b3aa170d1

View File

@ -1289,7 +1289,7 @@ static int get_oid_oneline(struct repository *r,
struct grab_nth_branch_switch_cbdata { struct grab_nth_branch_switch_cbdata {
int remaining; int remaining;
struct strbuf buf; struct strbuf *sb;
}; };
static int grab_nth_branch_switch(struct object_id *ooid, struct object_id *noid, static int grab_nth_branch_switch(struct object_id *ooid, struct object_id *noid,
@ -1307,8 +1307,8 @@ static int grab_nth_branch_switch(struct object_id *ooid, struct object_id *noid
return 0; return 0;
if (--(cb->remaining) == 0) { if (--(cb->remaining) == 0) {
len = target - match; len = target - match;
strbuf_reset(&cb->buf); strbuf_reset(cb->sb);
strbuf_add(&cb->buf, match, len); strbuf_add(cb->sb, match, len);
return 1; /* we are done */ return 1; /* we are done */
} }
return 0; return 0;
@ -1341,18 +1341,15 @@ static int interpret_nth_prior_checkout(struct repository *r,
if (nth <= 0) if (nth <= 0)
return -1; return -1;
cb.remaining = nth; cb.remaining = nth;
strbuf_init(&cb.buf, 20); cb.sb = buf;
retval = refs_for_each_reflog_ent_reverse(get_main_ref_store(r), retval = refs_for_each_reflog_ent_reverse(get_main_ref_store(r),
"HEAD", grab_nth_branch_switch, &cb); "HEAD", grab_nth_branch_switch, &cb);
if (0 < retval) { if (0 < retval) {
strbuf_reset(buf);
strbuf_addbuf(buf, &cb.buf);
retval = brace - name + 1; retval = brace - name + 1;
} else } else
retval = 0; retval = 0;
strbuf_release(&cb.buf);
return retval; return retval;
} }