diff options
author | root <root> | 2008-01-25 15:45:08 +0000 |
---|---|---|
committer | root <root> | 2008-01-25 15:45:08 +0000 |
commit | 6104d060a61e32a1a8d4e71d947b340fd13ac2f7 (patch) | |
tree | 25847f264eba11a4c9f0bb152f129dc98bed7871 /ev.c | |
parent | 66b451751514fa881505e9465cdd8e9484fef65d (diff) |
*** empty log message ***
Diffstat (limited to 'ev.c')
-rw-r--r-- | ev.c | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -869,19 +869,27 @@ static WL childs [EV_PID_HASHSIZE]; static ev_signal childev; +#ifndef WIFCONTINUED +# define WIFCONTINUED(status) 0 +#endif + void inline_speed child_reap (EV_P_ ev_signal *sw, int chain, int pid, int status) { ev_child *w; + int traced = WIFSTOPPED (status) || WIFCONTINUED (status); for (w = (ev_child *)childs [chain & (EV_PID_HASHSIZE - 1)]; w; w = (ev_child *)((WL)w)->next) - if (w->pid == pid || !w->pid) - { - ev_set_priority (w, ev_priority (sw)); /* need to do it *now* */ - w->rpid = pid; - w->rstatus = status; - ev_feed_event (EV_A_ (W)w, EV_CHILD); - } + { + if ((w->pid == pid || !w->pid) + && (!traced || (w->flags & 1))) + { + ev_set_priority (w, ev_priority (sw)); /* need to do it *now* */ + w->rpid = pid; + w->rstatus = status; + ev_feed_event (EV_A_ (W)w, EV_CHILD); + } + } } #ifndef WCONTINUED |