From 81f619612e4c7b7ecb092e40cdf241e62f395c59 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Sat, 24 Jan 2026 22:00:35 +0000 Subject: [PATCH] Fix memory allocation in blockdata_retrieve() This was functionally correct, but every call malloced a new buffer and freed the previous one, rather than only doing that when the buffer needed expansion. --- src/blockdata.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/blockdata.c b/src/blockdata.c index 668d63f..dc02d46 100644 --- a/src/blockdata.c +++ b/src/blockdata.c @@ -202,11 +202,15 @@ void *blockdata_retrieve(struct blockdata *block, size_t len, void *data) { if (len > buff_len) { - if (!(new = whine_malloc(len))) + blen = len + 1024; + if (!(new = whine_malloc(blen))) return NULL; + if (buff) free(buff); + buff = new; + buff_len = blen; } data = buff; }