mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
ztimer: correctly unset timer->next (fix ztimer_is_set())
ztimer's machinery depends on figuring out if a timer is currently set or not. It does that using _is_set(), which is also exposed as ztimer_is_set(). Now when a timer expired and got taken of the timer queue using _now_next(), the `next` pointer wasn't unset. This caused _is_set() to wrongly return `true` for that timer. Internally in ztimer, this didn't cause breakage, just an unnecessary iteration of the timer queue by _delete_timer_from_list(). But this also broke the public ztimer_is_set(). This commit fixes the issue by correctly NULLing the timer's `next` pointer when the timer triggers.
This commit is contained in:
parent
855a6fa36a
commit
88b509e56d
@ -281,6 +281,10 @@ static ztimer_t *_now_next(ztimer_clock_t *clock)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
/* reset next pointer so ztimer_is_set() works */
|
||||
entry->next = NULL;
|
||||
}
|
||||
return (ztimer_t *)entry;
|
||||
}
|
||||
else {
|
||||
|
Loading…
Reference in New Issue
Block a user