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

Commit 2c6b424

Browse files
vkurchatkintrevnorris
authored andcommitted
events: check if _events is an own property
Without this check it is possible to have the _events object shared amongst instances. Fixes #7157 Signed-off-by: Trevor Norris <[email protected]>
1 parent c7f424e commit 2c6b424

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

lib/events.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ EventEmitter.init = function() {
4949
this.domain = domain.active;
5050
}
5151
}
52-
this._events = this._events || {};
52+
53+
if (!this._events || this._events === Object.getPrototypeOf(this)._events)
54+
this._events = {};
55+
5356
this._maxListeners = this._maxListeners || undefined;
5457
};
5558

test/simple/test-event-emitter-subclass.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,17 @@ process.on('exit', function() {
5353
assert.deepEqual(myee._events, {});
5454
console.log('ok');
5555
});
56+
57+
58+
function MyEE2() {
59+
EventEmitter.call(this);
60+
}
61+
62+
MyEE2.prototype = new EventEmitter();
63+
64+
var ee1 = new MyEE2();
65+
var ee2 = new MyEE2();
66+
67+
ee1.on('x', function () {});
68+
69+
assert.equal(EventEmitter.listenerCount(ee2, 'x'), 0);

0 commit comments

Comments
 (0)