- list_append_list(list, &timers->level[0]->list[off]);
- if (timers->base == now)
- break;
- } while (update_first(timers));
+ /* This *may* be NULL, if we deleted the first timer */
+ t = list_pop(&timers->level[0]->list[off], struct timer, list);
+ if (t)
+ list_node_init(&t->list);
+ } while (!t && update_first(timers));
+
+ return t;