From 7f29f817fa939ef1bbb740584f09e76e2ecd5b06 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 10 Jun 2010 09:41:11 +0200 Subject: tevent: Fix maxfd calculation in tevent_select When doing fd1 = tevent_add_fd(ev, ev, 2, 0, NULL, NULL); fd2 = tevent_add_fd(ev, ev, 3, 0, NULL, NULL); TALLOC_FREE(fd2); fd2 = tevent_add_fd(ev, ev, 1, 0, NULL, NULL); we end up with select_ev->maxfd==1. This is wrong. An alternative fix might be to make select_ev->maxfd an unsigned int and make EVENT_INVALID_MAXFD==UINT_MAX. But in theory we might end up with an fd of UINT_MAX. std_event_add_fd() contains exactly the same piece of code, so I'm directly pushing it. Volker --- lib/tevent/tevent_select.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/tevent/tevent_select.c b/lib/tevent/tevent_select.c index 1598094d2d..8cc6d06a59 100644 --- a/lib/tevent/tevent_select.c +++ b/lib/tevent/tevent_select.c @@ -116,7 +116,8 @@ static struct tevent_fd *select_event_add_fd(struct tevent_context *ev, TALLOC_C handler_name, location); if (!fde) return NULL; - if (fde->fd > select_ev->maxfd) { + if ((select_ev->maxfd != EVENT_INVALID_MAXFD) + && (fde->fd > select_ev->maxfd)) { select_ev->maxfd = fde->fd; } talloc_set_destructor(fde, select_event_fd_destructor); -- cgit