From: Felix Fietkau Date: Fri, 11 Feb 2011 00:25:17 +0000 (+0100) Subject: allow multiple calls to uloop_init() without annoying side effects X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7ec33884a3b852c139d0afb4d94bfff79804b115;p=oweals%2Flibubox.git allow multiple calls to uloop_init() without annoying side effects --- diff --git a/uloop.c b/uloop.c index 568dcd6..8410634 100644 --- a/uloop.c +++ b/uloop.c @@ -47,13 +47,16 @@ #define ULOOP_MAX_EVENTS 10 static struct uloop_timeout *first_timeout; -static int poll_fd; +static int poll_fd = -1; bool uloop_cancelled = false; #ifdef USE_KQUEUE int uloop_init(void) { + if (poll_fd >= 0) + return 0; + poll_fd = kqueue(); if (poll_fd < 0) return -1; @@ -160,6 +163,9 @@ static void uloop_run_events(int timeout) int uloop_init(void) { + if (poll_fd >= 0) + return 0; + poll_fd = epoll_create(32); if (poll_fd < 0) return -1; @@ -383,5 +389,9 @@ void uloop_run(void) void uloop_done(void) { + if (poll_fd < 0) + return; + close(poll_fd); + poll_fd = -1; }