From c66aac6e28483a6089b0e39897bc88b064fea135 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Thu, 9 Jul 2020 12:33:09 +0200 Subject: [PATCH] strbuf: Update buf->size if realloc succeeds. --- src/utils/strbuf/strbuf.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/utils/strbuf/strbuf.c b/src/utils/strbuf/strbuf.c index b0b5da186..d72db6a78 100644 --- a/src/utils/strbuf/strbuf.c +++ b/src/utils/strbuf/strbuf.c @@ -135,10 +135,13 @@ void strbuf_reset(strbuf_t *buf) { /* Truncate the buffer to the page size. This is deemed a good compromise * between freeing memory (after a large buffer has been constructed) and * performance (avoid unnecessary allocations). */ - if (buf->size > strbuf_pagesize()) { - char *new_ptr = realloc(buf->ptr, strbuf_pagesize()); - if (new_ptr != NULL) + size_t new_size = strbuf_pagesize(); + if (buf->size > new_size) { + char *new_ptr = realloc(buf->ptr, new_size); + if (new_ptr != NULL) { buf->ptr = new_ptr; + buf->size = new_size; + } } } -- 2.47.2