timers: fix timers with non-integer delay hanging.
When backporting f8193ab3 into v0.10, a regression was introduced. Timers with non-integer timeout could trigger a infinite recursion with 100% cpu usage. This commit backports 93b06246 which fixes the regression. After backporting f8193ab3, instead of using Date.now(), timers would use Timer.now() to determine if they had expired. However, Timer.now() is based on loop->time, which is not updated when a timer's remaining time is > 0 and < 1. Timers would thus never timeout if their remaining time was at some point > 0 and < 1. With this commit, Timer.now() updates loop->time itself, and timers always timeout eventually. Fixes #8065 and #8068.
parent
2fd7ee12
Please register or sign in to comment