* 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:
parent
445d5ce8fc
commit
933673e83b
|
@ -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.
|
||||||
|
|
|
@ -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 ();
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue