aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2004-01-03 20:57:11 +0000
committerChristopher Faylor <me@cgf.cx>2004-01-03 20:57:11 +0000
commit0efff769fde31941788e77bdeac1d7fdd2e19088 (patch)
tree24978f13cedccf63e22bba3e434a2a120c5853d0
parentc0bece84cd749390b92c49c9c44dc8606f03e809 (diff)
downloadnewlib-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/ChangeLog7
-rw-r--r--winsup/cygwin/exceptions.cc3
-rw-r--r--winsup/cygwin/pinfo.cc2
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;