From: Felix Fietkau Date: Tue, 23 Oct 2012 01:41:45 +0000 (+0200) Subject: uloop: fix a segfault on deleting the first active timer from within another timer X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=commitdiff_plain;h=6e7e8a1a910ec00511acc7c98653f57613ec5d0b;hp=0e51f714d107584668438742c4fb1c631c629061 uloop: fix a segfault on deleting the first active timer from within another timer --- diff --git a/uloop.c b/uloop.c index acf46db..aa09750 100644 --- a/uloop.c +++ b/uloop.c @@ -464,9 +464,11 @@ static int uloop_get_next_timeout(struct timeval *tv) static void uloop_process_timeouts(struct timeval *tv) { - struct uloop_timeout *t, *tmp; + struct uloop_timeout *t; + + while (!list_empty(&timeouts)) { + t = list_first_entry(&timeouts, struct uloop_timeout, list); - list_for_each_entry_safe(t, tmp, &timeouts, list) { if (tv_diff(&t->time, tv) > 0) break;