diff --git a/src/unix/process.c b/src/unix/process.c index 0aff5fd3..be283b48 100644 --- a/src/unix/process.c +++ b/src/unix/process.c @@ -85,9 +85,14 @@ static void uv__chld(uv_signal_t* handle, int signum) { QUEUE_INSERT_TAIL(&pending, &process->queue); } - QUEUE_FOREACH(q, &pending) { + h = &pending; + q = QUEUE_HEAD(h); + while (q != h) { process = QUEUE_DATA(q, uv_process_t, queue); - QUEUE_REMOVE(q); + q = QUEUE_NEXT(q); + + QUEUE_REMOVE(&process->queue); + QUEUE_INIT(&process->queue); uv__handle_stop(process); if (process->exit_cb == NULL)