From 0667089d47dd0cee5bda83965ff6bbdc2e4fd288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 20 Nov 2015 15:35:37 +0100 Subject: buffer: tweak memory allocation strategy Do not simply double the requested size. Instead take the maximum of - the requested size - double the current buffer size This will use less memory for large register operations (e.g. deleting the whole file). --- buffer.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/buffer.c b/buffer.c index 1577e6f..a0b60e2 100644 --- a/buffer.c +++ b/buffer.c @@ -15,10 +15,7 @@ bool buffer_grow(Buffer *buf, size_t size) { if (size < BUF_SIZE) size = BUF_SIZE; if (buf->size < size) { - /* if this is not the first allocation i.e. the buffer is - * currently full, double the size to avoid memory pressure */ - if (buf->size > 0) - size *= 2; + size = MAX(size, buf->size*2); char *data = realloc(buf->data, size); if (!data) return false; -- cgit v1.2.3