strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()

Implement strbuf_addbuf() as a normal function in order to avoid calling
strbuf_grow() twice, with the second callinside strbud_add() being a
no-op.  This is slightly faster and also reduces the text size a bit.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2016-07-21 18:46:44 +02:00 committed by Junio C Hamano
parent 8109984d61
commit 31471ba21e
2 changed files with 8 additions and 5 deletions

View File

@ -197,6 +197,13 @@ void strbuf_add(struct strbuf *sb, const void *data, size_t len)
strbuf_setlen(sb, sb->len + len); strbuf_setlen(sb, sb->len + len);
} }
void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2)
{
strbuf_grow(sb, sb2->len);
memcpy(sb->buf + sb->len, sb2->buf, sb2->len);
strbuf_setlen(sb, sb->len + sb2->len);
}
void strbuf_adddup(struct strbuf *sb, size_t pos, size_t len) void strbuf_adddup(struct strbuf *sb, size_t pos, size_t len)
{ {
strbuf_grow(sb, len); strbuf_grow(sb, len);

View File

@ -263,11 +263,7 @@ static inline void strbuf_addstr(struct strbuf *sb, const char *s)
/** /**
* Copy the contents of another buffer at the end of the current one. * Copy the contents of another buffer at the end of the current one.
*/ */
static inline void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2) extern void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2);
{
strbuf_grow(sb, sb2->len);
strbuf_add(sb, sb2->buf, sb2->len);
}
/** /**
* Copy part of the buffer from a given position till a given length to the * Copy part of the buffer from a given position till a given length to the