fixed a select bug which caused rsync to use far more cpu time than
[rsync/rsync.git] / io.c
diff --git a/io.c b/io.c
index 587b3c7..52c4cb1 100644 (file)
--- a/io.c
+++ b/io.c
@@ -148,7 +148,8 @@ static int readfd(int fd,char *buffer,int N)
                        tv.tv_sec = io_timeout;
                        tv.tv_usec = 0;
 
-                       if (select(fd+1, &fds, NULL, NULL, &tv) != 1) {
+                       if (select(fd+1, &fds, NULL, NULL, 
+                                  io_timeout?&tv:NULL) != 1) {
                                check_timeout();
                        }
                }
@@ -472,7 +473,8 @@ void io_printf(int fd, const char *format, ...)
 #if HAVE_VSNPRINTF
        len = vsnprintf(buf, sizeof(buf)-1, format, ap);
 #else
-       len = vsprintf(buf, format, ap);
+       vsprintf(buf, format, ap);
+       len = strlen(buf);
 #endif
        va_end(ap);