Skip to content

Commit 5e2b3d7

Browse files
committed
Merge branch 'tr/maint-strbuf-grow-nul-termination'
* tr/maint-strbuf-grow-nul-termination: strbuf_grow(): maintain nul-termination even for new buffer
2 parents 8a72864 + 8c74ef1 commit 5e2b3d7

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

strbuf.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@ void strbuf_init(struct strbuf *sb, size_t hint)
3030
{
3131
sb->alloc = sb->len = 0;
3232
sb->buf = strbuf_slopbuf;
33-
if (hint) {
33+
if (hint)
3434
strbuf_grow(sb, hint);
35-
sb->buf[0] = '\0';
36-
}
3735
}
3836

3937
void strbuf_release(struct strbuf *sb)
@@ -65,12 +63,15 @@ void strbuf_attach(struct strbuf *sb, void *buf, size_t len, size_t alloc)
6563

6664
void strbuf_grow(struct strbuf *sb, size_t extra)
6765
{
66+
int new_buf = !sb->alloc;
6867
if (unsigned_add_overflows(extra, 1) ||
6968
unsigned_add_overflows(sb->len, extra + 1))
7069
die("you want to use way too much memory");
71-
if (!sb->alloc)
70+
if (new_buf)
7271
sb->buf = NULL;
7372
ALLOC_GROW(sb->buf, sb->len + extra + 1, sb->alloc);
73+
if (new_buf)
74+
sb->buf[0] = '\0';
7475
}
7576

7677
void strbuf_trim(struct strbuf *sb)

0 commit comments

Comments
 (0)