changeset 214:05a1cf2761da HEAD

fixes for io_buffer_read_max()
author Timo Sirainen <tss@iki.fi>
date Tue, 10 Sep 2002 06:24:02 +0300
parents 2a2ab4994b8a
children 6a18c1cf4d68
files src/lib/iobuffer.c
diffstat 1 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/iobuffer.c	Tue Sep 10 06:18:34 2002 +0300
+++ b/src/lib/iobuffer.c	Tue Sep 10 06:24:02 2002 +0300
@@ -652,8 +652,8 @@
 	buf->buffer_size = stop_offset - buf->mmap_offset;
 	if (buf->buffer_size > buf->max_buffer_size)
 		buf->buffer_size = buf->max_buffer_size;
-	if (buf->buffer_size > size)
-		buf->buffer_size = size;
+	if (buf->buffer_size > size + buf->skip)
+		buf->buffer_size = size + buf->skip;
 
 	buf->buffer = mmap(NULL, buf->buffer_size, PROT_READ, MAP_PRIVATE,
 			   buf->fd, buf->mmap_offset);
@@ -707,11 +707,9 @@
 		size = buf->buffer_size - buf->pos;
 
 	if (!buf->file) {
-		ret = net_receive(buf->fd, buf->buffer + buf->pos,
-				  buf->buffer_size - buf->pos);
+		ret = net_receive(buf->fd, buf->buffer + buf->pos, size);
 	} else {
-                ret = read(buf->fd, buf->buffer + buf->pos,
-			   buf->buffer_size - buf->pos);
+                ret = read(buf->fd, buf->buffer + buf->pos, size);
 		if (ret == 0)
 			ret = -1; /* EOF */
 		else if (ret < 0 && (errno == EINTR || errno == EAGAIN))