From c61b642318cd428b188ffb82ec90a7d912423067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 20 Dec 2016 18:59:44 +0100 Subject: buffer: fix error case in buffer_append0 Do not change buffer length when failing to append. --- buffer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'buffer.c') diff --git a/buffer.c b/buffer.c index f483d53..8794e20 100644 --- a/buffer.c +++ b/buffer.c @@ -93,9 +93,12 @@ bool buffer_append(Buffer *buf, const void *data, size_t len) { } bool buffer_append0(Buffer *buf, const char *data) { - if (buf->len > 0 && buf->data[buf->len-1] == '\0') - buf->len--; - return buffer_append(buf, data, strlen(data)) && buffer_append(buf, "\0", 1); + size_t nul = (buf->len > 0 && buf->data[buf->len-1] == '\0') ? 1 : 0; + buf->len -= nul; + bool ret = buffer_append(buf, data, strlen(data)+1); + if (!ret) + buf->len += nul; + return ret; } bool buffer_prepend(Buffer *buf, const void *data, size_t len) { -- cgit v1.2.3