util.poll: Handle failed epoll FD creation
authorKim Alvefur <zash@zash.se>
Thu, 11 Oct 2018 18:52:12 +0200
changeset 9479 f3935aa4cc7e
parent 9478 9b26a50cdfe3
child 9480 0738f5276e0a
util.poll: Handle failed epoll FD creation
util-src/poll.c
--- a/util-src/poll.c	Thu Oct 11 18:50:04 2018 +0200
+++ b/util-src/poll.c	Thu Oct 11 18:52:12 2018 +0200
@@ -386,8 +386,19 @@
 
 	/* Initialize state */
 #ifdef USE_EPOLL
-	state->epoll_fd = epoll_create1(0);
+	state->epoll_fd = -1;
 	state->processed = 0;
+
+	int epoll_fd = epoll_create1(EPOLL_CLOEXEC);
+
+	if(epoll_fd <= 0) {
+		lua_pushnil(L);
+		lua_pushstring(L, strerror(errno));
+		lua_pushinteger(L, errno);
+		return 3;
+	}
+
+	state->epoll_fd = epoll_fd;
 #else
 	FD_ZERO(&state->wantread);
 	FD_ZERO(&state->wantwrite);