diff --git a/src/xenia/base/main_win.cc b/src/xenia/base/main_win.cc index e6b1e8029..b8047d280 100644 --- a/src/xenia/base/main_win.cc +++ b/src/xenia/base/main_win.cc @@ -44,12 +44,16 @@ void AttachConsole() { } has_console_attached_ = true; - FILE* dummy; - freopen_s(&dummy, "CONIN$", "rb", stdin); - freopen_s(&dummy, "CONOUT$", "wb", stdout); - freopen_s(&dummy, "CONOUT$", "wb", stderr); - + auto std_handle = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE); + auto con_handle = _open_osfhandle(std_handle, _O_TEXT); + auto fp = _fdopen(con_handle, "w"); + *stdout = *fp; setvbuf(stdout, nullptr, _IONBF, 0); + + std_handle = (intptr_t)GetStdHandle(STD_ERROR_HANDLE); + con_handle = _open_osfhandle(std_handle, _O_TEXT); + fp = _fdopen(con_handle, "w"); + *stderr = *fp; setvbuf(stderr, nullptr, _IONBF, 0); }