diff --git a/Common/OS.cpp b/Common/OS.cpp index dd8bfdd1f4b416b3b0d45cd8ce3434b4669763d2..e04130fa3fee4dd63ef2fff080313931b62287db 100644 --- a/Common/OS.cpp +++ b/Common/OS.cpp @@ -263,15 +263,18 @@ void RedirectIOToConsole() // redirect unbuffered stdout, stdin and stderr to the console intptr_t lStdHandle = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE); int hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - *stdout = _fdopen(hConHandle, "w"); + FILE *fp = _fdopen(hConHandle, "w"); + *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0); lStdHandle = (intptr_t)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - *stdin = _fdopen(hConHandle, "r"); + fp = _fdopen(hConHandle, "r"); + *stdin = *fp; setvbuf(stdin, NULL, _IONBF, 0); lStdHandle = (intptr_t)GetStdHandle(STD_ERROR_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - *stderr = _fdopen(hConHandle, "w"); + fp = _fdopen(hConHandle, "w"); + *stderr = *fp; setvbuf(stderr, NULL, _IONBF, 0); // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog point to // console as well