]> git.ipfire.org Git - thirdparty/git.git/blobdiff - strbuf.c
The thirteenth batch
[thirdparty/git.git] / strbuf.c
index 0d929e4e195fa3db65257142e558938471e7c141..3d2189a7f648dcba44e85aa1b2047b00b3f871df 100644 (file)
--- a/strbuf.c
+++ b/strbuf.c
@@ -313,6 +313,15 @@ void strbuf_add(struct strbuf *sb, const void *data, size_t len)
        strbuf_setlen(sb, sb->len + len);
 }
 
+void strbuf_addstrings(struct strbuf *sb, const char *s, size_t n)
+{
+       size_t len = strlen(s);
+
+       strbuf_grow(sb, st_mult(len, n));
+       for (size_t i = 0; i < n; i++)
+               strbuf_add(sb, s, len);
+}
+
 void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2)
 {
        strbuf_grow(sb, sb2->len);
@@ -691,8 +700,10 @@ int strbuf_getwholeline(struct strbuf *sb, FILE *fp, int term)
 int strbuf_appendwholeline(struct strbuf *sb, FILE *fp, int term)
 {
        struct strbuf line = STRBUF_INIT;
-       if (strbuf_getwholeline(&line, fp, term))
+       if (strbuf_getwholeline(&line, fp, term)) {
+               strbuf_release(&line);
                return EOF;
+       }
        strbuf_addbuf(sb, &line);
        strbuf_release(&line);
        return 0;