diff options
author | Christopher Faylor <me@cgf.cx> | 2004-01-03 20:57:11 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2004-01-03 20:57:11 +0000 |
commit | 0efff769fde31941788e77bdeac1d7fdd2e19088 (patch) | |
tree | 24978f13cedccf63e22bba3e434a2a120c5853d0 | |
parent | c0bece84cd749390b92c49c9c44dc8606f03e809 (diff) | |
download | newlib-0efff769fde31941788e77bdeac1d7fdd2e19088.zip newlib-0efff769fde31941788e77bdeac1d7fdd2e19088.tar.gz newlib-0efff769fde31941788e77bdeac1d7fdd2e19088.tar.bz2 |
* exceptions.cc (_threadinfo::interrupt_now): Avoid double call to sigdelayed.
* pinfo.cc (_pinfo::commune_send): Avoid inexplicable test which caused most
pids to be shown as "<defunct>" on Win9x.
-rw-r--r-- | winsup/cygwin/ChangeLog | 7 | ||||
-rw-r--r-- | winsup/cygwin/exceptions.cc | 3 | ||||
-rw-r--r-- | winsup/cygwin/pinfo.cc | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 983ff57..e970723 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2004-01-03 Christopher Faylor <cgf@redhat.com> + + * exceptions.cc (_threadinfo::interrupt_now): Avoid double call to + sigdelayed. + * pinfo.cc (_pinfo::commune_send): Avoid inexplicable test which caused + most pids to be shown as "<defunct>" on Win9x. + 2004-01-02 Christopher Faylor <cgf@redhat.com> * cygheap.h (init_cygheap): Play more vfork shell games and move diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 9795530..669b516 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -675,7 +675,7 @@ _threadinfo::interrupt_now (CONTEXT *ctx, int sig, void *handler, { push (0); interrupt_setup (sig, handler, siga, (__stack_t) ctx->Eip); - ctx->Eip = (DWORD) sigdelayed; + ctx->Eip = pop (); SetThreadContext (*this, ctx); /* Restart the thread in a new location */ return 1; } @@ -1133,7 +1133,6 @@ call_signal_handler_now () return sa_flags & SA_RESTART; } -#define pid_offset (unsigned)(((_pinfo *)NULL)->pid) void __stdcall reset_signal_arrived () { diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 4ce702e..834fa85 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -435,7 +435,7 @@ _pinfo::commune_send (DWORD code, ...) res.s = NULL; res.n = 0; - if (!pid || !this || (dwProcessId != (DWORD) pid && !pinfo (myself->dwProcessId))) + if (!this || !pid) { set_errno (ESRCH); goto err; |