diff --git a/src/unix/kqueue.c b/src/unix/kqueue.c index da19e3bc8..9971f2abd 100644 --- a/src/unix/kqueue.c +++ b/src/unix/kqueue.c @@ -50,12 +50,20 @@ int uv__kqueue_init(uv_loop_t* loop) { - loop->backend_fd = kqueue(); - if (loop->backend_fd == -1) + int fd; + int err; + + fd = kqueue(); + if (fd == -1) return UV__ERR(errno); - uv__cloexec(loop->backend_fd, 1); + err = uv__cloexec(fd, 1); + if (err) { + uv__close(fd); + return err; + } + loop->backend_fd = fd; return 0; }