diff --git a/src/node_platform.cc b/src/node_platform.cc index 3c729e50fa575e..37a2195517b56d 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -5,6 +5,7 @@ #include "debug_utils.h" #include "util.h" #include +#include #include namespace node { @@ -126,8 +127,7 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { delay_in_seconds_(delay_in_seconds) {} void Run() override { - uint64_t delay_millis = - static_cast(delay_in_seconds_ + 0.5) * 1000; + uint64_t delay_millis = llround(delay_in_seconds_ * 1000); std::unique_ptr timer(new uv_timer_t()); CHECK_EQ(0, uv_timer_init(&scheduler_->loop_, timer.get())); timer->data = task_.release(); @@ -378,8 +378,8 @@ bool PerIsolatePlatformData::FlushForegroundTasksInternal() { while (std::unique_ptr delayed = foreground_delayed_tasks_.Pop()) { did_work = true; - uint64_t delay_millis = - static_cast(delayed->timeout + 0.5) * 1000; + uint64_t delay_millis = llround(delayed->timeout * 1000); + delayed->timer.data = static_cast(delayed.get()); uv_timer_init(loop_, &delayed->timer); // Timers may not guarantee queue ordering of events with the same delay if