diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2012-02-21 10:12:15 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2012-02-21 10:12:15 +0000 |
commit | ced06a4b777353086ea61d99cdde4459ef9e9041 (patch) | |
tree | 74a995f93d42f8ba1f71b70dc173456ddf5262ce /src/events/event_target.c | |
parent | ada2afaf1658f4e75e09b17f306766b767300734 (diff) | |
download | libdom-ced06a4b777353086ea61d99cdde4459ef9e9041.tar.gz libdom-ced06a4b777353086ea61d99cdde4459ef9e9041.tar.bz2 |
Fix listener destructor loop again
svn path=/trunk/libdom/; revision=13459
Diffstat (limited to 'src/events/event_target.c')
-rw-r--r-- | src/events/event_target.c | 11 |
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 */ |