From 6e7e8a1a910ec00511acc7c98653f57613ec5d0b Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 23 Oct 2012 03:41:45 +0200 Subject: [PATCH] uloop: fix a segfault on deleting the first active timer from within another timer --- uloop.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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;