changeset 75:7418fefb57a8 HEAD

IOBuffer was buggy if start_offset wasn't 0
author Timo Sirainen <tss@iki.fi>
date Wed, 28 Aug 2002 22:25:16 +0300
parents d6ab9aa7e105
children 8035cf09b913
files src/lib/iobuffer.c
diffstat 1 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/iobuffer.c	Wed Aug 28 22:09:47 2002 +0300
+++ b/src/lib/iobuffer.c	Wed Aug 28 22:25:16 2002 +0300
@@ -735,21 +735,21 @@
 {
 	uoff_t real_offset;
 
+	real_offset = buf->start_offset + offset;
+	if (real_offset > OFF_T_MAX) {
+		errno = EINVAL;
+		return FALSE;
+	}
+
 	if (buf->mmaped) {
 		/* first reset everything */
 		io_buffer_reset(buf);
 
 		/* then set the wanted position, next read will
 		   pick up from there */
-		buf->offset = buf->start_offset;
-		buf->pos = buf->skip = offset;
+                buf->offset = 0;
+		buf->pos = buf->skip = real_offset;
 	} else {
-		real_offset = buf->start_offset + offset;
-		if (real_offset > OFF_T_MAX) {
-			errno = EINVAL;
-			return FALSE;
-		}
-
 		if (lseek(buf->fd, (off_t)real_offset, SEEK_SET) !=
 		    (off_t)real_offset)
 			return FALSE;