* 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:
		| @@ -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: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user