From d7d315ddf40b22158fba76b1156ffe09770103de Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 29 Dec 2020 23:05:45 +0100 Subject: [PATCH] conhost: Ignore CONTROL_C_EXIT exceptions in Unix mode. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50304 Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- programs/conhost/conhost.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c index 4b156f21ea3..3e41577a44b 100644 --- a/programs/conhost/conhost.c +++ b/programs/conhost/conhost.c @@ -2674,6 +2674,14 @@ static int main_loop( struct console *console, HANDLE signal ) return 0; } +static LONG WINAPI handle_ctrl_c( EXCEPTION_POINTERS *eptr ) +{ + if (eptr->ExceptionRecord->ExceptionCode != CONTROL_C_EXIT) return EXCEPTION_CONTINUE_SEARCH; + /* In Unix mode, ignore ctrl c exceptions. Signals are sent it to clients as well and we will + * terminate the usual way if they don't handle it. */ + return EXCEPTION_CONTINUE_EXECUTION; +} + int __cdecl wmain(int argc, WCHAR *argv[]) { int headless = 0, i, width = 0, height = 0; @@ -2763,5 +2771,7 @@ int __cdecl wmain(int argc, WCHAR *argv[]) ShowWindow( console.win, (si.dwFlags & STARTF_USESHOWWINDOW) ? si.wShowWindow : SW_SHOW ); } + if (console.is_unix) RtlAddVectoredExceptionHandler( FALSE, handle_ctrl_c ); + return main_loop( &console, signal ); }