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