Fix showing color console if debugger attached on windows. (#88)

This commit is contained in:
PabloMK7 2024-04-22 23:37:59 +02:00 committed by GitHub
parent d063f26efc
commit a8e601ae7d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -25,7 +25,14 @@ void ToggleConsole() {
#ifdef _WIN32 #ifdef _WIN32
FILE* temp; FILE* temp;
if (UISettings::values.show_console) { if (UISettings::values.show_console) {
if (AllocConsole()) { BOOL alloc_console_res = AllocConsole();
DWORD last_error = 0;
if (!alloc_console_res) {
last_error = GetLastError();
}
// If the windows debugger already opened a console, calling AllocConsole again
// will cause ERROR_ACCESS_DENIED. If that's the case assume a console is open.
if (alloc_console_res || last_error == ERROR_ACCESS_DENIED) {
// The first parameter for freopen_s is a out parameter, so we can just ignore it // The first parameter for freopen_s is a out parameter, so we can just ignore it
freopen_s(&temp, "CONIN$", "r", stdin); freopen_s(&temp, "CONIN$", "r", stdin);
freopen_s(&temp, "CONOUT$", "w", stdout); freopen_s(&temp, "CONOUT$", "w", stdout);