mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 664528 - [].sort misbehaves when the array being sorted starts with at least one hole and otherwise contains only holes and |undefined| as its elements. r=jandem
This commit is contained in:
parent
08aae12ab6
commit
3265481090
@ -1582,10 +1582,15 @@ js::array_sort(JSContext *cx, unsigned argc, Value *vp)
|
||||
allInts = allInts && v.isInt32();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* If the array only contains holes, we're done. But if it contains
|
||||
* undefs, those must be sorted to the front of the array.
|
||||
*/
|
||||
n = vec.length();
|
||||
if (n == 0) {
|
||||
if (n == 0 && undefs == 0) {
|
||||
args.rval().setObject(*obj);
|
||||
return true; /* The array has only holes and undefs. */
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Here len == n + undefs + number_of_holes. */
|
||||
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/licenses/publicdomain/
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
var BUGNUMBER = 664528;
|
||||
var summary =
|
||||
"Sorting an array containing only holes and |undefined| should move all " +
|
||||
"|undefined| to the start of the array";
|
||||
|
||||
print(BUGNUMBER + ": " + summary);
|
||||
|
||||
/**************
|
||||
* BEGIN TEST *
|
||||
**************/
|
||||
|
||||
var a = [, , , undefined];
|
||||
a.sort();
|
||||
|
||||
assertEq(a.hasOwnProperty(0), true);
|
||||
assertEq(a[0], undefined);
|
||||
assertEq(a.hasOwnProperty(1), false);
|
||||
assertEq(a.hasOwnProperty(2), false);
|
||||
assertEq(a.hasOwnProperty(3), false);
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
if (typeof reportCompare === "function")
|
||||
reportCompare(true, true);
|
||||
|
||||
print("Tests complete");
|
Loading…
Reference in New Issue
Block a user