[dovecot-cvs] dovecot/src/lib istream-file.c,1.19,1.20

cras at dovecot.org cras at dovecot.org
Sun Aug 22 15:09:27 EEST 2004


Update of /home/cvs/dovecot/src/lib
In directory talvi:/tmp/cvs-serv6405/lib

Modified Files:
	istream-file.c 
Log Message:
_read() never returns 0 for files.



Index: istream-file.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib/istream-file.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- istream-file.c	22 Aug 2004 04:00:06 -0000	1.19
+++ istream-file.c	22 Aug 2004 12:09:25 -0000	1.20
@@ -109,9 +109,11 @@
 	ret = -1;
 
 	if (fstream->file) {
-		ret = pread(stream->fd, stream->w_buffer + stream->pos, size,
-			    stream->istream.v_offset +
-			    (stream->pos - stream->skip));
+		do {
+			ret = pread(stream->fd, stream->w_buffer + stream->pos,
+				    size, stream->istream.v_offset +
+				    (stream->pos - stream->skip));
+		} while (ret < 0 && errno == EINTR);
 	} else {
 		ret = read(stream->fd, stream->w_buffer + stream->pos, size);
 	}
@@ -147,6 +149,7 @@
 	}
 
 	stream->pos += ret;
+	i_assert(ret != 0 || !fstream->file);
 	return ret;
 }
 



More information about the dovecot-cvs mailing list