summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2012-02-21 10:12:15 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2012-02-21 10:12:15 +0000
commitced06a4b777353086ea61d99cdde4459ef9e9041 (patch)
tree74a995f93d42f8ba1f71b70dc173456ddf5262ce
parentada2afaf1658f4e75e09b17f306766b767300734 (diff)
downloadlibdom-ced06a4b777353086ea61d99cdde4459ef9e9041.tar.gz
libdom-ced06a4b777353086ea61d99cdde4459ef9e9041.tar.bz2
Fix listener destructor loop again
svn path=/trunk/libdom/; revision=13459
-rw-r--r--src/events/event_target.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/events/event_target.c b/src/events/event_target.c
index 079d764..6df683d 100644
--- a/src/events/event_target.c
+++ b/src/events/event_target.c
@@ -21,19 +21,16 @@
static void event_target_destroy_listeners(struct listener_entry *list)
{
- const struct listener_entry *head = list;
+ struct listener_entry *next = NULL;
- do {
- struct listener_entry *next =
- (struct listener_entry *) list->list.next;
+ for (; list != next; list = next) {
+ next = (struct listener_entry *) list->list.next;
list_del(&list->list);
dom_event_listener_unref(list->listener);
dom_string_unref(list->type);
free(list);
-
- list = next;
- } while (list != head);
+ }
}
/* Initialise this EventTarget */