Skip to main content

Bug Tracker

Side navigation

#8421 closed bug (fixed)

Opened March 02, 2011 11:15AM UTC

Closed March 03, 2011 02:18PM UTC

Last modified March 09, 2012 08:15AM UTC

resolveWith fails on IE8 when called with no "args" argument

Reported by: Martín Soto <donsoto@gmail.com> Owned by: jaubourg
Priority: high Milestone: 1.5.2
Component: core Version: 1.5.1
Keywords: Cc:
Blocked by: Blocking:
Description

Deferred's resolveWith method fails on IE8 (with and without IE7 compat mode) when called without its second argument ("args"), e.g.,

d = $.Deferred();
...
d.resolveWith(this);

According to the docs, this arguments is optional, so this would be a valid call, and it indeed works as expected on at least Firefox and Chrome. IE, on the other hand, fails with an "Object expected" error.

A very small test case for the problem is available at http://jsfiddle.net/martinsoto/BLDTG/. It affects both jQuery 1.5 and 1.5.1.

I could trace this to the apply call at line 862 of jquery-1.5.1.js:

callbacks.shift().apply( context, args );

When resolveWith is called without the args argument, apply gets called here with an undefined but explicit second argument. This evidently makes IE choke.

Attachments (0)
Change History (2)

Changed March 03, 2011 02:03PM UTC by jaubourg comment:1

_comment0: Not just IE, very good catch :)1299161854124346
component: unfiledcore
milestone: 1.next1.5.2
owner: → jaubourg
priority: undecidedhigh
status: newassigned

very good catch :)

Changed March 03, 2011 02:18PM UTC by jaubourg comment:2

resolution: → fixed
status: assignedclosed

Used the wrong format to notify the fix in the commit message.

https://github.com/jquery/jquery/commit/c1279895f3f33cacc08e508c2409b587c0e6a5a2