Remove setvbuf(<handle>, NULL, _IOLBF, 0) calls for Win32
authorFilip Navara <filip.navara@gmail.com>
Mon, 27 Jul 2009 15:02:04 +0000 (10:02 -0500)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 27 Jul 2009 19:09:15 +0000 (14:09 -0500)
On Win32 the setvbuf function requires the last parameter to be size between 2 and INT_MAX bytes, so the calls always failed. Since the whole point of the calls is to set line-buffered mode for the file handle and that's not supported on Win32 anyway, conditionally remove them.

Signed-off-by: Filip Navara <filip.navara@gmail.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
exec.c
vl.c

diff --git a/exec.c b/exec.c
index 7d3eb1a..ef79d6d 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -1491,7 +1491,8 @@ void cpu_set_log(int log_flags)
             static char logfile_buf[4096];
             setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf));
         }
-#else
+#elif !defined(_WIN32)
+        /* Win32 doesn't support line-buffering and requires size >= 2 */
         setvbuf(logfile, NULL, _IOLBF, 0);
 #endif
         log_append = 1;
diff --git a/vl.c b/vl.c
index bdf2fe8..198523e 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -5755,7 +5755,10 @@ int main(int argc, char **argv, char **envp)
         exit(1);
     }
 
+#ifndef _WIN32
+    /* Win32 doesn't support line-buffering and requires size >= 2 */
     setvbuf(stdout, NULL, _IOLBF, 0);
+#endif
 
     init_timers();
     if (init_timer_alarm() < 0) {