active.
* syscalls.cc (_read): Don't clear errno.
* sigproc.cc (wait_sig): Don't scan the waiting process list after a SIGCHLD if
there are no zombies to reap.
* winsup.h: Use __builtin_strcmp.
* environ.cc (posify): Don't initialize len unless it is required
(from DJ Delorie <dj@redhat.com>).
+Wed Oct 18 00:48:49 2000 Christopher Faylor <cgf@cygnus.com>
+
+ * exceptions.cc (call_handler): Make signal pending if sigsave.sig is
+ still active.
+ * syscalls.cc (_read): Don't clear errno.
+ * sigproc.cc (wait_sig): Don't scan the waiting process list after a
+ SIGCHLD if there are no zombies to reap.
+ * winsup.h: Use __builtin_strcmp.
+ * environ.cc (posify): Don't initialize len unless it is required
+ (from DJ Delorie <dj@redhat.com>).
+
Tue Oct 17 14:50:31 2000 Christopher Faylor <cgf@cygnus.com>
* sigproc.cc (proc_subproc): Remove unneeded test for correct process
{
char *src = *here;
win_env *conv;
- int len = strcspn (src, "=") + 1;
if (!(conv = getwinenv (src)))
return;
+ int len = strcspn (src, "=") + 1;
+
/* Turn all the items from c:<foo>;<bar> into their
mounted equivalents - if there is one. */
/* This is the main stack frame info for this process. */
static NO_COPY stack_info thestack;
-signal_dispatch sigsave;
+static signal_dispatch sigsave;
/* Initialize everything needed to start iterating. */
void
mainthread.lock->acquire ();
+ if (sigsave.sig)
+ goto set_pending;
+
if (mainthread.frame)
{
ebp = mainthread.frame;
continue;
}
- if (saw_sigchld && !dispatched_sigchld)
+ if (nzombies && saw_sigchld && !dispatched_sigchld)
proc_subproc (PROC_CLEARWAIT, 0);
/* Signal completion of signal handling depending on which semaphore
* woke up the WaitForMultipleObjects above.
return -1;
}
- set_sig_errno (0);
+ // set_sig_errno (0);
fhandler_base *fh = fdtab[fd];
DWORD wait = (fh->get_flags () & (O_NONBLOCK | OLD_O_NDELAY)) ? 0 : INFINITE;
else if (!fh->ready_for_read (fd, wait, 0))
{
if (!wait)
- set_sig_errno (EAGAIN);
+ set_sig_errno (EAGAIN); /* Don't really need 'set_sig_errno' here, but... */
else
set_sig_errno (EINTR);
res = -1;
#ifdef __cplusplus
-#define alloca(x) __builtin_alloca (x)
+#define alloca __builtin_alloca
#define strlen __builtin_strlen
+#define strcmp __builtin_strcmp
#define strcpy __builtin_strcpy
#define memcpy __builtin_memcpy
#define memcmp __builtin_memcmp