--- libev/ev.c 2007/11/29 17:28:13 1.158 +++ libev/ev.c 2007/12/01 19:48:36 1.159 @@ -1344,7 +1344,7 @@ call_pending (EV_A); /* in case we recurse, ensure ordering stays nice and clean */ - while (activecnt) + for (;;) { #ifndef _WIN32 if (expect_false (curpid)) /* penalise the forking check even more */ @@ -1372,6 +1372,9 @@ call_pending (EV_A); } + if (expect_false (!activecnt)) + break; + /* we might have forked, so reify kernel state if necessary */ if (expect_false (postfork)) loop_fork (EV_A);