* dcrt0.cc (dll_crt0_1): Flag that we are working "incyg". Handle any signals

(presumably exiting signals) which may have come in while we are in the process
of setting up.
This commit is contained in:
Christopher Faylor 2013-01-21 16:56:09 +00:00
parent df0f949cfd
commit 3b1a8c572f
2 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* dcrt0.cc (dll_crt0_1): Flag that we are working "incyg". Handle any
signals (presumably exiting signals) which may have come in while we
are in the process of setting up.
2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx> 2013-01-21 Christopher Faylor <me.cygwin2013@cgf.cx>
* update-copyright: Recognize configure.ac scripts too. * update-copyright: Recognize configure.ac scripts too.

View File

@ -820,6 +820,8 @@ dll_crt0_1 (void *)
{ {
extern void initial_setlocale (); extern void initial_setlocale ();
_my_tls.incyg++;
if (dynamically_loaded) if (dynamically_loaded)
sigproc_init (); sigproc_init ();
@ -987,7 +989,13 @@ dll_crt0_1 (void *)
/* Per POSIX set the default application locale back to "C". */ /* Per POSIX set the default application locale back to "C". */
_setlocale_r (_REENT, LC_CTYPE, "C"); _setlocale_r (_REENT, LC_CTYPE, "C");
if (user_data->main) if (!user_data->main)
{
/* Handle any signals which may have arrived */
_my_tls.call_signal_handler ();
_my_tls.incyg--; /* Not in Cygwin anymore */
}
else
{ {
/* Create a copy of Cygwin's version of __argv so that, if the user makes /* Create a copy of Cygwin's version of __argv so that, if the user makes
a change to an element of argv[] it does not affect Cygwin's argv. a change to an element of argv[] it does not affect Cygwin's argv.
@ -998,6 +1006,9 @@ dll_crt0_1 (void *)
char **oav = __argv; char **oav = __argv;
while ((*nav++ = *oav++) != NULL) while ((*nav++ = *oav++) != NULL)
continue; continue;
/* Handle any signals which may have arrived */
_my_tls.call_signal_handler ();
_my_tls.incyg--; /* Not in Cygwin anymore */
cygwin_exit (user_data->main (__argc, newargv, *user_data->envptr)); cygwin_exit (user_data->main (__argc, newargv, *user_data->envptr));
} }
__asm__ (" \n\ __asm__ (" \n\