* init.cc (dll_entry): Previous code reversion was ill-advised. Revert it.

* sigproc.cc (child_info::sync): Ditto.
* pinfo.cc (_pinfo::exit): Don't set myself.procinfo to NULL since it is no
longer required.
This commit is contained in:
Christopher Faylor 2004-12-27 02:13:30 +00:00
parent 445d5ce8fc
commit 933673e83b
4 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2004-12-26 Christopher Faylor <cgf@timesys.com>
* init.cc (dll_entry): Previous code reversion was ill-advised. Revert
it.
* sigproc.cc (child_info::sync): Ditto.
* pinfo.cc (_pinfo::exit): Don't set myself.procinfo to NULL since it
is no longer required.
2004-12-26 Christopher Faylor <cgf@timesys.com> 2004-12-26 Christopher Faylor <cgf@timesys.com>
* init.cc (dll_entry): Remove exit code setting. * init.cc (dll_entry): Remove exit code setting.

View File

@ -13,6 +13,7 @@ details. */
#include "thread.h" #include "thread.h"
#include "perprocess.h" #include "perprocess.h"
#include "cygtls.h" #include "cygtls.h"
#include "pinfo.h"
int NO_COPY dynamically_loaded; int NO_COPY dynamically_loaded;
static char *search_for = (char *) cygthread::stub; static char *search_for = (char *) cygthread::stub;
@ -126,6 +127,8 @@ dll_entry (HANDLE h, DWORD reason, void *static_load)
dll_crt0_0 (); dll_crt0_0 ();
break; break;
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:
if (myself && myself->exitcode == EXITCODE_UNSET)
myself->exitcode = 1 << 8;
break; break;
case DLL_THREAD_ATTACH: case DLL_THREAD_ATTACH:
munge_threadfunc (); munge_threadfunc ();

View File

@ -132,7 +132,6 @@ _pinfo::exit (UINT n, bool norecord)
sigproc_printf ("Calling ExitProcess %d", n); sigproc_printf ("Calling ExitProcess %d", n);
_my_tls.stacklock = 0; _my_tls.stacklock = 0;
_my_tls.stackptr = _my_tls.stack; _my_tls.stackptr = _my_tls.stack;
myself.procinfo = NULL; // This breaks the abstraction a little doesn't it?
ExitProcess (exitcode); ExitProcess (exitcode);
} }

View File

@ -798,6 +798,13 @@ child_info::sync (pinfo& vchild, DWORD howlong)
case WAIT_OBJECT_0 + 1: case WAIT_OBJECT_0 + 1:
if (WaitForSingleObject (subproc_ready, 0) == WAIT_OBJECT_0) if (WaitForSingleObject (subproc_ready, 0) == WAIT_OBJECT_0)
sigproc_printf ("should never happen. noticed subproc_ready after process exit"); sigproc_printf ("should never happen. noticed subproc_ready after process exit");
else
{
DWORD exitcode = 0;
(void) GetExitCodeProcess (vchild.hProcess, &exitcode);
vchild->exitcode = (exitcode & 0xff) << 8;
sigproc_printf ("non-cygwin exit value is %p", exitcode);
}
res = false; res = false;
break; break;
default: default: