Browse Source

events: loop backwards in removeListener

`removeAllListeners` is removing events from end to start. Therefore
it spends O(n^2) time, since `removeListener` is searching from start to
end.
v0.9.12-release
Felix Böhm 12 years ago
committed by Fedor Indutny
parent
commit
3e64b5677f
  1. 2
      lib/events.js

2
lib/events.js

@ -201,7 +201,7 @@ EventEmitter.prototype.removeListener = function(type, listener) {
this.emit('removeListener', type, listener); this.emit('removeListener', type, listener);
} else if (typeof list === 'object') { } else if (typeof list === 'object') {
for (i = 0; i < length; i++) { for (i = length; i-- > 0;) {
if (list[i] === listener || if (list[i] === listener ||
(list[i].listener && list[i].listener === listener)) { (list[i].listener && list[i].listener === listener)) {
position = i; position = i;

Loading…
Cancel
Save