From d4b92ae9a094e1b388e3d70789a0db9a9c69cbdf Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Tue, 11 Jan 2011 16:22:12 +0100 Subject: [PATCH] Set unbuffered I/O also for C standard library In input_available() we use function select(), so we have to set as unbuffered also C library I/O functions otherwise we can miss some input. For instance in case GUI sends "go infinite\nstop\n" we parse the "go infinite" but then input_available() under Linux is unable to detect that we still have "stop" to be processed. This is because "select" uses file descriptors instead of file pointers. So it cannot know about the buffer associated to a file pointer. This patch, by BB+, should fix the problem. No functional change. Signed-off-by: Marco Costalba --- src/main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index fa821151..0f7d0e78 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,6 +25,7 @@ //// Includes //// +#include #include #include @@ -54,7 +55,9 @@ extern void benchmark(int argc, char* argv[]); int main(int argc, char* argv[]) { - // Disable IO buffering + // Disable IO buffering for C and C++ standard libraries + setvbuf(stdin, NULL, _IONBF, 0); + setvbuf(stdout, NULL, _IONBF, 0); cout.rdbuf()->pubsetbuf(NULL, 0); cin.rdbuf()->pubsetbuf(NULL, 0); -- 2.39.2