strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
authorRené Scharfe <l.s.r@web.de>
Thu, 21 Jul 2016 16:46:44 +0000 (18:46 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Jul 2016 16:22:26 +0000 (09:22 -0700)
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>
strbuf.c
strbuf.h
index 958387562184fe27c7e476ebb24d5547a55ae4ad..600e27ea4a04ad3404641cf6faa772df64beb583 100644 (file)
--- a/strbuf.c
+++ b/strbuf.c
@@ -197,6 +197,13 @@ void strbuf_add(struct strbuf *sb, const void *data, size_t 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)
 {
        strbuf_grow(sb, len);
index 5397d91d7ade0360077c3b2ceb9e6d3cd226820d..45d25d7c4b675038b93c4fe19af72c2e3f983e1e 100644 (file)
--- a/strbuf.h
+++ b/strbuf.h
@@ -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.
  */
-static inline void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2)
-{
-       strbuf_grow(sb, sb2->len);
-       strbuf_add(sb, sb2->buf, sb2->len);
-}
+extern void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2);
 
 /**
  * Copy part of the buffer from a given position till a given length to the