From 61df64865116ea4eac8b4f6da393ba4670f26103 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Sun, 7 Dec 2014 20:51:04 -0500 Subject: [PATCH] Callbacks: Disabling a callback should prevent firing Thanks to @TheDistantSea for the report! Fixes gh-1790 Closes gh-1643 (cherry picked from commit bc1cb122db30be034b3da84ee2546c86e2a5268f) --- src/callbacks.js | 6 ++++-- test/unit/callbacks.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/callbacks.js b/src/callbacks.js index 51e3a3ab9..8b6a57f9f 100644 --- a/src/callbacks.js +++ b/src/callbacks.js @@ -151,8 +151,10 @@ jQuery.Callbacks = function( options ) { }, // Remove all callbacks from the list empty: function() { - list = []; - firingLength = 0; + if ( list ) { + list = []; + firingLength = 0; + } return this; }, // Have the list do nothing anymore diff --git a/test/unit/callbacks.js b/test/unit/callbacks.js index 843c95849..d997a0d9e 100644 --- a/test/unit/callbacks.js +++ b/test/unit/callbacks.js @@ -340,3 +340,18 @@ test( "jQuery.Callbacks() - adding a string doesn't cause a stack overflow", fun ok( true, "no stack overflow" ); }); + +test( "jQuery.Callbacks() - disabled callback doesn't fire (gh-1790)", function() { + + expect( 1 ); + + var cb = jQuery.Callbacks(), + fired = false, + shot = function() { fired = true; }; + + cb.disable(); + cb.empty(); + cb.add( shot ); + cb.fire(); + ok( !fired, "Disabled callback function didn't fire" ); +});