summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBo Yang <boyang@novell.com>2009-01-10 13:46:50 +0800
committerStefan Metzmacher <metze@samba.org>2009-01-11 15:26:47 +0100
commitde4812ea1c9ed9ca69f949411fbdb0c8a0e66eef (patch)
treec9ba535c56101400f89998bc68c36b9e568cf8da /lib
parent0c2f8ab3ecf5535b053fa974a93ff6d65e619c2c (diff)
downloadsamba-de4812ea1c9ed9ca69f949411fbdb0c8a0e66eef.tar.gz
samba-de4812ea1c9ed9ca69f949411fbdb0c8a0e66eef.tar.xz
samba-de4812ea1c9ed9ca69f949411fbdb0c8a0e66eef.zip
Fix tevent_common_context_destructor to remove all events instead of just the first one
Signed-off-by: Bo Yang <boyang@novell.com> Signed-off-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/tevent/tevent.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c
index c8b79c669c..fa8219e234 100644
--- a/lib/tevent/tevent.c
+++ b/lib/tevent/tevent.c
@@ -147,19 +147,25 @@ int tevent_common_context_destructor(struct tevent_context *ev)
ev->pipe_fde = NULL;
}
- for (fd=ev->fd_events; fd; fd = fd->next) {
+ fd = ev->fd_events;
+ while (fd) {
fd->event_ctx = NULL;
DLIST_REMOVE(ev->fd_events, fd);
+ fd = ev->fd_events;
}
- for (te=ev->timer_events; te; te = te->next) {
+ te = ev->timer_events;
+ while (te) {
te->event_ctx = NULL;
- DLIST_REMOVE(ev->timer_events, te);
+ DLIST_REMOVE(te->timer_events, te);
+ te = ev->timer_events;
}
- for (se=ev->signal_events; se; se = se->next) {
+ se = ev->signal_events;
+ while (se) {
se->event_ctx = NULL;
DLIST_REMOVE(ev->signal_events, se);
+ se = ev->signal_events;
}
return 0;