mirror of https://github.com/nodejs/node.git
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 <trev.norris@gmail.com>pull/37258/head
parent
c7f424e44b
commit
2c6b424829
|
@ -49,7 +49,10 @@ EventEmitter.init = function() {
|
|||
this.domain = domain.active;
|
||||
}
|
||||
}
|
||||
this._events = this._events || {};
|
||||
|
||||
if (!this._events || this._events === Object.getPrototypeOf(this)._events)
|
||||
this._events = {};
|
||||
|
||||
this._maxListeners = this._maxListeners || undefined;
|
||||
};
|
||||
|
||||
|
|
|
@ -53,3 +53,17 @@ process.on('exit', function() {
|
|||
assert.deepEqual(myee._events, {});
|
||||
console.log('ok');
|
||||
});
|
||||
|
||||
|
||||
function MyEE2() {
|
||||
EventEmitter.call(this);
|
||||
}
|
||||
|
||||
MyEE2.prototype = new EventEmitter();
|
||||
|
||||
var ee1 = new MyEE2();
|
||||
var ee2 = new MyEE2();
|
||||
|
||||
ee1.on('x', function () {});
|
||||
|
||||
assert.equal(EventEmitter.listenerCount(ee2, 'x'), 0);
|
||||
|
|
Loading…
Reference in New Issue