diff options
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r-- | winsup/cygwin/dcrt0.cc | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 51cc55f2529..1933f8cfe53 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -956,26 +956,18 @@ __main (void) do_global_ctors (user_data->ctors, FALSE); } -enum exit_states - { - ES_NOT_EXITING = 0, - ES_THREADTERM, - ES_SIGNAL, - ES_CLOSEALL, - ES_SIGPROCTERMINATE, - ES_TITLE, - ES_HUP_PGRP, - ES_HUP_SID, - ES_TTY_TERMINATE, - ES_EVENTS_TERMINATE - }; - exit_states NO_COPY exit_state; extern CRITICAL_SECTION exit_lock; -extern "C" void __stdcall +void __stdcall do_exit (int status) { + if (exit_state < ES_EVENTS_TERMINATE) + { + exit_state = ES_EVENTS_TERMINATE; + events_terminate (); + } + EnterCriticalSection (&exit_lock); UINT n = (UINT) status; @@ -1059,12 +1051,6 @@ do_exit (int status) tty_terminate (); } - if (exit_state < ES_EVENTS_TERMINATE) - { - exit_state = ES_EVENTS_TERMINATE; - events_terminate (); - } - minimal_printf ("winpid %d, exit %d", GetCurrentProcessId (), n); myself->exit (n); } |