Skip to content

Commit 944c2da

Browse files
committed
Merge pull request #26 from olivernn/clone-events-array
Slice the events array before looping through it
2 parents 2a38718 + d02dc67 commit 944c2da

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/event_emitter.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
EventEmitter.prototype.emit = function(name) {
3535
var args = Array.prototype.slice.call(arguments, 1)
36-
var events = prepareEvent.call(this, name)
36+
var events = prepareEvent.call(this, name).slice()
3737

3838
for (var i = 0, length = events.length; i < length; i++) {
3939
var callback = events[i].callback

test/tests/event_emitter_test.js

+18
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,21 @@ test("unbinding by callback and scope", 1, function() {
5050

5151
ee.emit("a")
5252
})
53+
54+
test("emitting events with callbacks that unbind events", function () {
55+
var ee = new Model.EventEmitter,
56+
eventName = 'test',
57+
callbackCalled = false
58+
59+
var handler = function () {
60+
ee.off(eventName, arguments.callee)
61+
}
62+
63+
ee.on('test', handler)
64+
ee.on('test', function () { callbackCalled = true })
65+
66+
ee.emit('test')
67+
68+
ok(callbackCalled)
69+
70+
})

0 commit comments

Comments
 (0)