From fce0eb416b47f205605fe3dde47550dec337c673 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Tue, 19 Nov 2013 10:58:23 +0400 Subject: events: do not accept NaN in setMaxListeners --- lib/events.js | 2 +- test/simple/test-event-emitter-max-listeners.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/events.js b/lib/events.js index 8c02a558e..f43df093d 100644 --- a/lib/events.js +++ b/lib/events.js @@ -45,7 +45,7 @@ exports.EventEmitter = EventEmitter; // that to be increased. Set to zero for unlimited. var defaultMaxListeners = 10; EventEmitter.prototype.setMaxListeners = function(n) { - if (typeof n !== 'number' || n < 0) + if (typeof n !== 'number' || n < 0 || isNaN(n)) throw TypeError('n must be a positive number'); this._maxListeners = n; }; diff --git a/test/simple/test-event-emitter-max-listeners.js b/test/simple/test-event-emitter-max-listeners.js index 3dea94bcc..dfc3e1352 100644 --- a/test/simple/test-event-emitter-max-listeners.js +++ b/test/simple/test-event-emitter-max-listeners.js @@ -38,4 +38,16 @@ e.on('maxListeners', function() { // Should not corrupt the 'maxListeners' queue. e.setMaxListeners(42); +assert.throws(function() { + e.setMaxListeners(NaN); +}); + +assert.throws(function() { + e.setMaxListeners(-1); +}); + +assert.throws(function() { + e.setMaxListeners("and even this"); +}); + e.emit('maxListeners'); -- cgit v1.2.1