fdm: do *not* keep polling on EINTR

This fixes an issue where foot --server did not exit on SIGINT. This
happened because we never returned out from fdm_poll(), and thus we
never saw ‘aborted’ being set.
This commit is contained in:
Daniel Eklöf 2020-12-04 18:36:53 +01:00
parent c1c42f047e
commit 384ba4d30d
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

9
fdm.c
View file

@ -324,12 +324,11 @@ fdm_poll(struct fdm *fdm)
struct epoll_event events[tll_length(fdm->fds)];
int r;
do {
r = epoll_wait(fdm->epoll_fd, events, tll_length(fdm->fds), -1);
} while (unlikely(r < 0 && errno == EINTR));
int r = epoll_wait(fdm->epoll_fd, events, tll_length(fdm->fds), -1);
if (unlikely(r < 0)) {
if (errno == EINTR)
return true;
if (r < 0) {
LOG_ERRNO("failed to epoll");
return false;
}