diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2012-02-20 22:39:00 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2012-02-20 22:39:00 +0000 |
commit | 67d0b86357fd58c49219c43277529a0d8c292c7e (patch) | |
tree | 82286ff7e99f83d0046694ee46b7e771468cbbd8 /src/events/event_target.c | |
parent | a2b39ce5bdd2cac9aba212de65e4348779821dfe (diff) | |
download | libdom-67d0b86357fd58c49219c43277529a0d8c292c7e.tar.gz libdom-67d0b86357fd58c49219c43277529a0d8c292c7e.tar.bz2 |
Fix listener list destruction
svn path=/trunk/libdom/; revision=13455
Diffstat (limited to 'src/events/event_target.c')
-rw-r--r-- | src/events/event_target.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/events/event_target.c b/src/events/event_target.c index e64ebac..ab47c1d 100644 --- a/src/events/event_target.c +++ b/src/events/event_target.c @@ -21,19 +21,17 @@ static void event_target_destroy_listeners(struct listener_entry *list) { - if (list == NULL) - return; + while (list != NULL) { + struct listener_entry *next = + (struct listener_entry *) list->list.next; - while (list != (struct listener_entry *) list->list.next) { - list_del(list->list.next); + list_del(&list->list); dom_event_listener_unref(list->listener); dom_string_unref(list->type); free(list); - } - dom_event_listener_unref(list->listener); - dom_string_unref(list->type); - free(list); + list = next; + } } /* Initialise this EventTarget */ |