Commit Diff


commit - 63b67323012151914b3e1915580c512524b470c5
commit + 2b4b2ae19107f2c7e45ca6ab6f73c9c8a5fb84dd
blob - 5dd7e86868941e332f09c0e9ab4ee286f8c71552
blob + 927fc64f8f740dab6de72194b4abec25ead0aae6
--- src/libthread/fdwait.c
+++ src/libthread/fdwait.c
@@ -233,8 +233,9 @@ threadread(int fd, void *a, long n)
 
 	threadfdnoblock(fd);
 again:
+	errno = 0;
 	nn = read(fd, a, n);
-	if(nn < 0){
+	if(nn <= 0){
 		if(errno == EINTR)
 			goto again;
 		if(errno == EAGAIN || errno == EWOULDBLOCK){