if (w->repeat)
{
assert (("negative ev_timer repeat value found while processing timers", w->repeat > 0.));
- ((WT)w)->at = mn_now + w->repeat;
+
+ ((WT)w)->at += w->repeat;
+ if (((WT)w)->at < mn_now)
+ ((WT)w)->at = mn_now;
+
downheap ((WT *)timers, timercnt, 0);
}
else
if (!ev_is_active (w))
return;
+ assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax));
+
wlist_del ((WL *)&anfds[w->fd].head, (WL)w);
ev_stop (EV_A_ (W)w);
downheap ((WT *)timers, timercnt, ((W)w)->active - 1);
}
- ((WT)w)->at = w->repeat;
+ ((WT)w)->at -= mn_now;
ev_stop (EV_A_ (W)w);
}