From c1279895f3f33cacc08e508c2409b587c0e6a5a2 Mon Sep 17 00:00:00 2001 From: jaubourg Date: Thu, 3 Mar 2011 15:16:47 +0100 Subject: [PATCH] Fix for #8421. Makes sure resolveWith can be called with only one parameter. --- src/core.js | 2 ++ test/unit/core.js | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/core.js b/src/core.js index 036b2db..1e7250f 100644 --- a/src/core.js +++ b/src/core.js @@ -837,6 +837,8 @@ jQuery.extend({ // resolve with given context and args resolveWith: function( context, args ) { if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; firing = 1; try { while( callbacks[ 0 ] ) { diff --git a/test/unit/core.js b/test/unit/core.js index bce0de0..208b21c 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -916,7 +916,7 @@ test("jQuery.parseJSON", function(){ test("jQuery._Deferred()", function() { - expect( 10 ); + expect( 11 ); var deferred, object, @@ -1005,6 +1005,12 @@ test("jQuery._Deferred()", function() { deferred.resolveWith( jQuery , [ document ] ).done( function( doc ) { ok( this === jQuery && arguments.length === 1 && doc === document , "Test fire context & args" ); }); + + // #8421 + deferred = jQuery._Deferred(); + deferred.resolveWith().done(function() { + ok( true, "Test resolveWith can be called with no argument" ); + }); }); test("jQuery.Deferred()", function() { @@ -1143,16 +1149,16 @@ test("jQuery.sub() - Static Methods", function(){ } }); Subclass.fn.extend({subClassMethod: function() { return this;}}); - + //Test Simple Subclass ok(Subclass.topLevelMethod() === false, 'Subclass.topLevelMethod thought debug was true'); ok(Subclass.config.locale == 'en_US', Subclass.config.locale + ' is wrong!'); same(Subclass.config.test, undefined, 'Subclass.config.test is set incorrectly'); equal(jQuery.ajax, Subclass.ajax, 'The subclass failed to get all top level methods'); - + //Create a SubSubclass var SubSubclass = Subclass.sub(); - + //Make Sure the SubSubclass inherited properly ok(SubSubclass.topLevelMethod() === false, 'SubSubclass.topLevelMethod thought debug was true'); ok(SubSubclass.config.locale == 'en_US', SubSubclass.config.locale + ' is wrong!'); @@ -1169,7 +1175,7 @@ test("jQuery.sub() - Static Methods", function(){ ok(SubSubclass.config.locale == 'es_MX', SubSubclass.config.locale + ' is wrong!'); ok(SubSubclass.config.test == 'worked', 'SubSubclass.config.test is set incorrectly'); notEqual(jQuery.ajax, SubSubclass.ajax, 'The subsubclass failed to get all top level methods'); - + //This shows that the modifications to the SubSubClass did not bubble back up to it's superclass ok(Subclass.topLevelMethod() === false, 'Subclass.topLevelMethod thought debug was true'); ok(Subclass.config.locale == 'en_US', Subclass.config.locale + ' is wrong!'); -- 1.7.10.4