changeset 6746:2259ec6c009a HEAD

Stating seekable stream didn't restore read conditions correctly. Also it returned broken values with larger streams.
author Timo Sirainen <tss@iki.fi>
date Thu, 08 Nov 2007 21:17:14 +0200
parents 55853fd9d2cf
children 0cee1cccd14c
files src/lib/istream-seekable.c
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/istream-seekable.c	Thu Nov 08 20:52:29 2007 +0200
+++ b/src/lib/istream-seekable.c	Thu Nov 08 21:17:14 2007 +0200
@@ -272,13 +272,15 @@
 		   we're finished */
 		old_offset = stream->istream.v_offset;
 		do {
-			i_stream_skip(&stream->istream, stream->skip);
+			i_stream_skip(&stream->istream,
+				      stream->pos - stream->skip);
 		} while ((ret = i_stream_seekable_read(stream)) > 0);
 
 		if (ret == 0) {
 			i_panic("i_stream_stat() used for non-blocking "
 				"seekable stream");
 		}
+		i_stream_skip(&stream->istream, stream->pos - stream->skip);
 		i_stream_seek(&stream->istream, old_offset);
 	}