--- libev/ev.c 2008/02/19 19:01:13 1.212 +++ libev/ev.c 2008/02/19 19:13:50 1.213 @@ -819,15 +819,15 @@ void inline_size evpipe_write (EV_P_ int sig, int async) { - if (!(gotasync || gotsig)) - { - int old_errno = errno; /* save errno becaue write might clobber it */ + int sent = gotasync || gotsig; - if (sig) gotsig = 1; - if (async) gotasync = 1; + if (sig) gotsig = 1; + if (async) gotasync = 1; + if (!sent) + { + int old_errno = errno; /* save errno becaue write might clobber it */ write (evpipe [1], &old_errno, 1); - errno = old_errno; } }