events: do not accept NaN in setMaxListeners
authorFedor Indutny <fedor.indutny@gmail.com>
Tue, 19 Nov 2013 06:58:23 +0000 (10:58 +0400)
committerFedor Indutny <fedor.indutny@gmail.com>
Tue, 19 Nov 2013 09:14:01 +0000 (13:14 +0400)
lib/events.js
test/simple/test-event-emitter-max-listeners.js

index 8c02a55..f43df09 100644 (file)
@@ -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;
 };
index 3dea94b..dfc3e13 100644 (file)
@@ -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');