From 6c999fd2855f9bccf99666431cddc9b34930720b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 17 Aug 2012 14:11:33 +0200 Subject: [PATCH] timers: fix assertion in Timeout.unref() Ensure that the delay >= 0 when detaching the timer from the queue. Fixes the following assertion: uv_timer_start: Assertion `timeout >= 0' failed. No test included, it's timing sensitive. --- lib/timers.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/timers.js b/lib/timers.js index 897b64f9124..d281ea40615 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -253,10 +253,12 @@ var Timeout = function(after) { Timeout.prototype.unref = function() { if (!this._handle) { + var delay = this._when - Date.now(); + if (delay < 0) delay = 0; exports.unenroll(this); this._handle = new Timer(); this._handle.ontimeout = this._onTimeout; - this._handle.start(this._when - Date.now(), 0); + this._handle.start(delay, 0); this._handle.domain = this.domain; this._handle.unref(); } else {