The destructor isn't being called for timers that have been unref'd.
Fixes: https://github.com/joyent/node/issues/8364
PR-URL: https://github.com/iojs/io.js/pull/1330
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
this._repeat = null;
};
+
+function unrefdHandle() {
+ this.owner._onTimeout();
+ if (!this.owner.repeat)
+ this.owner.close();
+}
+
+
Timeout.prototype.unref = function() {
if (this._handle) {
this._handle.unref();
if (this._called && !this._repeat) return;
this._handle = new Timer();
- this._handle[kOnTimeout] = this._onTimeout;
+ this._handle.owner = this;
+ this._handle[kOnTimeout] = unrefdHandle;
this._handle.start(delay, 0);
this._handle.domain = this.domain;
this._handle.unref();