From 33acb79f64de9a05122f0e3cc103cbcf58864b9c Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 8 May 2017 05:57:40 -0700 Subject: buffers: don't let a buffer shrink to zero. * buf.c (buf_shrink): If a buffer has zero length, don't shrink the allocation size all the way down to zero, because that value indicates a non-resizeable buffer. --- buf.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'buf.c') diff --git a/buf.c b/buf.c index 5f8f17f8..c9cb4332 100644 --- a/buf.c +++ b/buf.c @@ -150,11 +150,13 @@ static void buf_grow(struct buf *b, val init_val, val self) static void buf_shrink(struct buf *b) { - cnum oldsize = c_num(b->size); - cnum len = c_num(b->len); + val len = b->len; + + if (len == zero) + len = succ(len); - if (len != oldsize) { - b->data = chk_realloc(b->data, len); + if (len != b->size) { + b->data = chk_realloc(b->data, c_num(len)); b->size = b->len; } } -- cgit v1.2.3