summaryrefslogtreecommitdiff
path: root/lib/tevent
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tevent')
-rw-r--r--lib/tevent/tevent.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c
index cf178028fd..ea16fa1e07 100644
--- a/lib/tevent/tevent.c
+++ b/lib/tevent/tevent.c
@@ -138,34 +138,31 @@ const char **tevent_backend_list(TALLOC_CTX *mem_ctx)
int tevent_common_context_destructor(struct tevent_context *ev)
{
- struct tevent_fd *fd;
- struct tevent_timer *te;
- struct tevent_signal *se;
+ struct tevent_fd *fd, *fn;
+ struct tevent_timer *te, *tn;
+ struct tevent_signal *se, *sn;
if (ev->pipe_fde) {
talloc_free(ev->pipe_fde);
ev->pipe_fde = NULL;
}
- fd = ev->fd_events;
- while (fd) {
+ for (fd = ev->fd_events; fd; fd = fn) {
+ fn = fd->next;
fd->event_ctx = NULL;
DLIST_REMOVE(ev->fd_events, fd);
- fd = ev->fd_events;
}
- te = ev->timer_events;
- while (te) {
+ for (te = ev->timer_events; te; te = tn) {
+ tn = te->next;
te->event_ctx = NULL;
DLIST_REMOVE(ev->timer_events, te);
- te = ev->timer_events;
}
- se = ev->signal_events;
- while (se) {
+ for (se = ev->signal_events; se; se = sn) {
+ sn = se->next;
se->event_ctx = NULL;
DLIST_REMOVE(ev->signal_events, se);
- se = ev->signal_events;
}
return 0;