mirror of https://github.com/nodejs/node.git
Fix #3425: removeAllListeners should delete array
When removeAllListeners is called, the listeners array
is deleted to maintain compatibility with v0.6.
Reverts "events: don't delete the listeners array"
This reverts commit 78dc13fbf9
.
Conflicts:
test/simple/test-event-emitter-remove-all-listeners.js
pull/24503/head
parent
13400e3e58
commit
c9a1b5d162
|
@ -228,15 +228,8 @@ EventEmitter.prototype.removeAllListeners = function(type) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
var events = this._events && this._events[type];
|
// does not use listeners(), so no side effect of creating _events[type]
|
||||||
if (!events) return this;
|
if (type && this._events && this._events[type]) this._events[type] = null;
|
||||||
|
|
||||||
if (isArray(events)) {
|
|
||||||
events.splice(0);
|
|
||||||
} else {
|
|
||||||
this._events[type] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -39,10 +39,15 @@ e1.removeAllListeners('baz');
|
||||||
assert.deepEqual(e1.listeners('foo'), [listener]);
|
assert.deepEqual(e1.listeners('foo'), [listener]);
|
||||||
assert.deepEqual(e1.listeners('bar'), []);
|
assert.deepEqual(e1.listeners('bar'), []);
|
||||||
assert.deepEqual(e1.listeners('baz'), []);
|
assert.deepEqual(e1.listeners('baz'), []);
|
||||||
// identity check, the array should not change
|
// after calling removeAllListeners,
|
||||||
assert.equal(e1.listeners('foo'), fooListeners);
|
// the old listeners array should stay unchanged
|
||||||
assert.equal(e1.listeners('bar'), barListeners);
|
assert.deepEqual(fooListeners, [listener]);
|
||||||
assert.equal(e1.listeners('baz'), bazListeners);
|
assert.deepEqual(barListeners, [listener]);
|
||||||
|
assert.deepEqual(bazListeners, [listener, listener]);
|
||||||
|
// after calling removeAllListeners,
|
||||||
|
// new listeners arrays are different from the old
|
||||||
|
assert.notEqual(e1.listeners('bar'), barListeners);
|
||||||
|
assert.notEqual(e1.listeners('baz'), bazListeners);
|
||||||
|
|
||||||
var e2 = new events.EventEmitter();
|
var e2 = new events.EventEmitter();
|
||||||
e2.on('foo', listener);
|
e2.on('foo', listener);
|
||||||
|
|
Loading…
Reference in New Issue