Permalink
Browse files

Callbacks: Prevent add() from unlocking with-memory lists

Fixes gh-3469
Closes gh-3470
  • Loading branch information...
gibson042 committed Jan 9, 2017
1 parent 14b393d commit 9d822bc1c13dd3393b418210a99537c22c06f2c3
Showing with 22 additions and 1 deletion.
  1. +1 −1 src/callbacks.js
  2. +21 −0 test/unit/callbacks.js
View
@@ -69,7 +69,7 @@ jQuery.Callbacks = function( options ) {
fire = function() {
// Enforce single-firing
locked = options.once;
locked = locked || options.once;
// Execute callbacks for all pending executions,
// respecting firingIndex overrides and runtime changes
View
@@ -366,3 +366,24 @@ QUnit.test( "jQuery.Callbacks() - disabled callback doesn't fire (gh-1790)", fun
cb.fire();
assert.ok( !fired, "Disabled callback function didn't fire" );
} );
QUnit.test( "jQuery.Callbacks() - list with memory stays locked (gh-3469)", function( assert ) {
assert.expect( 3 );
var cb = jQuery.Callbacks( "memory" ),
fired = 0,
count1 = function() { fired += 1; },
count2 = function() { fired += 10; };
cb.add( count1 );
cb.fire();
assert.equal( fired, 1, "Pre-lock() fire" );
cb.lock();
cb.add( count2 );
assert.equal( fired, 11, "Post-lock() add" );
cb.fire();
assert.equal( fired, 11, "Post-lock() fire ignored" );
} );

0 comments on commit 9d822bc

Please sign in to comment.