summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/sigproc.cc7
-rw-r--r--winsup/cygwin/termios.cc2
3 files changed, 11 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 83e72a7f0..04681bee4 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-02 Christopher Faylor <me+cygwin@cgf.cx>
+
+ * sigproc.cc (stopped_or_terminated): Don't return a match when stopsig
+ == SIGCONT and not WCONTINUED.
+ * termios.cc (tcsetpgrp): Improve debugging output.
+
2009-08-01 Christopher Faylor <me+cygwin@cgf.cx>
* cygheap_malloc.h: New file.
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index 9c11ea022..bbbe9831e 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -1041,8 +1041,9 @@ stopped_or_terminated (waitq *parent_w, _pinfo *child)
int terminated;
- if (!((terminated = (child->process_state == PID_EXITED)) ||
- ((w->options & (WUNTRACED | WCONTINUED)) && child->stopsig)))
+ if (!((terminated = (child->process_state == PID_EXITED))
+ || ((w->options & WCONTINUED) && child->stopsig == SIGCONT)
+ || ((w->options & WUNTRACED) && child->stopsig && child->stopsig != SIGCONT)))
return false;
parent_w->next = w->next; /* successful wait. remove from wait queue */
@@ -1050,7 +1051,7 @@ stopped_or_terminated (waitq *parent_w, _pinfo *child)
if (!terminated)
{
- sigproc_printf ("stopped child");
+ sigproc_printf ("stopped child, stopsig %d", child->stopsig);
if (child->stopsig == SIGCONT)
w->status = __W_CONTINUED;
else
diff --git a/winsup/cygwin/termios.cc b/winsup/cygwin/termios.cc
index 4476be17d..0aa062300 100644
--- a/winsup/cygwin/termios.cc
+++ b/winsup/cygwin/termios.cc
@@ -220,7 +220,7 @@ tcsetpgrp (int fd, pid_t pgid)
else
res = cfd->tcsetpgrp (pgid);
- termios_printf ("%d = tcsetpgrp (%d, %x)", res, fd, pgid);
+ termios_printf ("%d = tcsetpgrp (%d, %d)", res, fd, pgid);
return res;
}