From 463386bbca063ac985104aeb8560ade64a1504fc Mon Sep 17 00:00:00 2001 From: Keon Jang Date: Mon, 23 Nov 2015 20:24:11 -0800 Subject: [PATCH] fix bug fore increasing snobj buffer size when it needs to be more than doubled. --- core/snobj.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/snobj.c b/core/snobj.c index 12d159b03..9c537e940 100644 --- a/core/snobj.c +++ b/core/snobj.c @@ -467,14 +467,18 @@ struct encode_state { static void reserve_more(struct encode_state *s, size_t bytes) { char *new_buf; + int new_buf_size = s->buf_size; if (s->offset + bytes <= s->buf_size) return; - new_buf = _REALLOC(s->buf, s->buf_size * 2); + while (new_buf_size < s->offset + bytes) + new_buf_size = new_buf_size * 2; + + new_buf = _REALLOC(s->buf, new_buf_size); s->buf = new_buf; - s->buf_size *= 2; + s->buf_size = new_buf_size; } /* return non-zero if fails */