Skip to content
This repository was archived by the owner on Apr 22, 2023. It is now read-only.

Commit 78db74d

Browse files
author
Julien Gilli
committed
timers: don't close interval timers when unrefd
This change fixes a regression introduced by commit 0d05123, which contained a typo that would cause every unrefd interval to fire only once. Fixes #8900. Reviewed-By: Timothy J Fontaine <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-by: Trevor Norris <[email protected]>
1 parent 1b81ea8 commit 78db74d

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

lib/timers.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ var Timeout = function(after) {
293293

294294
function unrefdHandle() {
295295
this.owner._onTimeout();
296-
if (!this.owner.repeat)
296+
if (!this.owner._repeat)
297297
this.owner.close();
298298
}
299299

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright Joyent, Inc. and other Node contributors.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a
4+
// copy of this software and associated documentation files (the
5+
// "Software"), to deal in the Software without restriction, including
6+
// without limitation the rights to use, copy, modify, merge, publish,
7+
// distribute, sublicense, and/or sell copies of the Software, and to permit
8+
// persons to whom the Software is furnished to do so, subject to the
9+
// following conditions:
10+
//
11+
// The above copyright notice and this permission notice shall be included
12+
// in all copies or substantial portions of the Software.
13+
//
14+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15+
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17+
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18+
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20+
// USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+
/*
23+
* This test is a regression test for joyent/node#8900.
24+
*/
25+
var assert = require('assert');
26+
27+
var N = 5;
28+
var nbIntervalFired = 0;
29+
var timer = setInterval(function() {
30+
++nbIntervalFired;
31+
if (nbIntervalFired === N)
32+
clearInterval(timer);
33+
}, 1);
34+
35+
timer.unref();
36+
37+
setTimeout(function onTimeout() {
38+
assert.strictEqual(nbIntervalFired, N);
39+
}, 100);

0 commit comments

Comments
 (0)