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;