|
@@ -48,8 +48,13 @@ void UvTaskRunner::OnTimeout(uv_timer_t* timer) {
|
|
|
|
|
|
self->tasks_[timer].Run();
|
|
|
self->tasks_.erase(timer);
|
|
|
- uv_unref(reinterpret_cast<uv_handle_t*>(timer));
|
|
|
- delete timer;
|
|
|
+ uv_timer_stop(timer);
|
|
|
+ uv_close(reinterpret_cast<uv_handle_t*>(timer), UvTaskRunner::OnClose);
|
|
|
+}
|
|
|
+
|
|
|
+// static
|
|
|
+void UvTaskRunner::OnClose(uv_handle_t* handle) {
|
|
|
+ delete reinterpret_cast<uv_timer_t*>(handle);
|
|
|
}
|
|
|
|
|
|
} // namespace atom
|