Mercurial > code
changeset 15:520939b40002
Do not increate buf->size on realloc failure
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 08 Sep 2011 13:34:13 +0200 |
parents | 2d112b8a3756 |
children | 4212fb4b4e41 |
files | buffer.c |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/buffer.c Wed Sep 07 23:32:10 2011 +0200 +++ b/buffer.c Thu Sep 08 13:34:13 2011 +0200 @@ -225,15 +225,20 @@ static int buffer_grow(struct buffer *buf, size_t needed) { + size_t newlen; + if ((buf->size - buf->length) > needed) return 0; if (buf->flags & BUFFER_AUTO) { - while (buf->size - buf->length - 1 < needed) - buf->size += buf->bsize; + newlen = buf->size; + while (newlen - buf->length - 1 < needed) + newlen += buf->bsize; if (!(buf->data = realloc(buf->data, buf->size))) return -1; + + buf->size = newlen; } else return (buf->bsize == buf->length) ? -1 : 0;