diff options
Diffstat (limited to 'src/common/fdset_epoll.c')
-rw-r--r-- | src/common/fdset_epoll.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/common/fdset_epoll.c b/src/common/fdset_epoll.c index f6f42f0..d4481b5 100644 --- a/src/common/fdset_epoll.c +++ b/src/common/fdset_epoll.c @@ -108,8 +108,8 @@ int fdset_epoll_remove(fdset_t *fdset, int fd) --fdset->nfds; /* Trim excessive memory if possible (retval is not interesting). */ - mreserve((char **)&fdset->events, sizeof(struct epoll_event), fdset->nfds, - OS_FDS_CHUNKSIZE, &fdset->reserved); + mreserve((char **)&fdset->events, sizeof(struct epoll_event), + fdset->nfds + 1, OS_FDS_CHUNKSIZE, &fdset->reserved); return 0; } @@ -173,7 +173,7 @@ int fdset_epoll_next(fdset_t *fdset, fdset_it_t *it) } /* Check boundaries. */ - if (it->pos >= fdset->polled) { + if (it->pos >= fdset->polled || it->pos >= fdset->nfds) { return -1; } |