#8421 closed bug (fixed)
resolveWith fails on IE8 when called with no "args" argument
Reported by: | 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.
Change History (2)
comment:1 Changed 13 years ago by
Component: | unfiled → core |
---|---|
Milestone: | 1.next → 1.5.2 |
Owner: | set to jaubourg |
Priority: | undecided → high |
Status: | new → assigned |
comment:2 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Used the wrong format to notify the fix in the commit message.
https://github.com/jquery/jquery/commit/c1279895f3f33cacc08e508c2409b587c0e6a5a2
very good catch :)