diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-12-20 18:59:44 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-12-20 18:59:44 +0100 |
| commit | c61b642318cd428b188ffb82ec90a7d912423067 (patch) | |
| tree | 80ffbc682ce5d6768a66767e22dc75eb9639b3ed | |
| parent | 804741d4f869552981345bcdc0fd2cf4f472b899 (diff) | |
| download | vis-c61b642318cd428b188ffb82ec90a7d912423067.tar.gz vis-c61b642318cd428b188ffb82ec90a7d912423067.tar.xz | |
buffer: fix error case in buffer_append0
Do not change buffer length when failing to append.
| -rw-r--r-- | buffer.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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) { |
