1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

sys/ztimer64: properly clear timer on removal

This commit is contained in:
Kaspar Schleiser 2022-03-01 10:56:14 +01:00
parent 3a9e64806c
commit 888cb09dff

View File

@ -127,6 +127,12 @@ static int _add_entry_to_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
} }
} }
static void _clear(ztimer64_base_t *entry)
{
entry->next = NULL;
entry->target = 0;
}
static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry) static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
{ {
DEBUG("_del_entry_from_list()\n"); DEBUG("_del_entry_from_list()\n");
@ -137,7 +143,7 @@ static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
if (clock->first == entry) { if (clock->first == entry) {
/* special case: removing first entry */ /* special case: removing first entry */
clock->first = entry->next; clock->first = entry->next;
entry->next = 0; _clear(entry);
return 1; return 1;
} }
else { else {
@ -151,7 +157,7 @@ static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
pos = pos->next; pos = pos->next;
} }
entry->next = 0; _clear(entry);
return 0; return 0;
} }
@ -238,9 +244,9 @@ void ztimer64_handler(void *arg)
ztimer64_t *timer = (ztimer64_t *)clock->first; ztimer64_t *timer = (ztimer64_t *)clock->first;
/* remove timer from list */ /* remove timer from list */
clock->first = clock->first->next; clock->first = clock->first->next;
/* clear timer struct so it can be re-set */ /* clear timer struct so it can be re-set */
timer->base.next = NULL; _clear(&timer->base);
timer->base.target = 0;
/* shoot callback */ /* shoot callback */
timer->callback(timer->arg); timer->callback(timer->arg);