Changeset 104267 in webkit
- Timestamp:
- Jan 5, 2012 9:29:28 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r104266 r104267 1 2012-01-05 Gavin Barraclough <barraclough@apple.com> 2 3 Date constructor handles infinite values incorrectly. 4 https://bugs.webkit.org/show_bug.cgi?id=70998 5 6 Reviewed by Filip Pizlo. 7 8 * fast/js/date-constructor-expected.txt: 9 * fast/js/script-tests/date-constructor.js: 10 - Added test cases. 11 1 12 2012-01-05 Gavin Barraclough <barraclough@apple.com> 2 13 -
trunk/LayoutTests/fast/js/date-constructor-expected.txt
r68347 r104267 25 25 PASS new Date(new Date(1111, 1, 1, 1, 1, 1, 1, 1)).getTime() - timeZoneOffset is -27104799538999 26 26 PASS new Date(new Date(1111, 1, 1, 1, 1, 1, 1, 1, 1)).getTime() - timeZoneOffset is -27104799538999 27 PASS Number(new Date(new Date(Infinity, 1, 1, 1, 1, 1, 1, 1, 1))) is Number.NaN 28 PASS Number(new Date(new Date(1, Infinity, 1, 1, 1, 1, 1, 1, 1))) is Number.NaN 29 PASS Number(new Date(new Date(1, 1, Infinity, 1, 1, 1, 1, 1, 1))) is Number.NaN 30 PASS Number(new Date(new Date(1, 1, 1, Infinity, 1, 1, 1, 1, 1))) is Number.NaN 31 PASS Number(new Date(new Date(1, 1, 1, 1, Infinity, 1, 1, 1, 1))) is Number.NaN 32 PASS Number(new Date(new Date(1, 1, 1, 1, 1, Infinity, 1, 1, 1))) is Number.NaN 33 PASS Number(new Date(new Date(1, 1, 1, 1, 1, 1, Infinity, 1, 1))) is Number.NaN 34 PASS Number(new Date(new Date(1, 1, 1, 1, 1, 1, 1, 1, Infinity))) is -2174741938999 27 35 PASS testStr is "1234567" 28 36 PASS testStr is "1234567" -
trunk/LayoutTests/fast/js/script-tests/date-constructor.js
r98407 r104267 36 36 shouldBe('new Date(new Date(1111, 1, 1, 1, 1, 1, 1, 1, 1)).getTime() - timeZoneOffset', '-27104799538999'); 37 37 38 shouldBe("Number(new Date(new Date(Infinity, 1, 1, 1, 1, 1, 1, 1, 1)))", 'Number.NaN'); 39 shouldBe("Number(new Date(new Date(1, Infinity, 1, 1, 1, 1, 1, 1, 1)))", 'Number.NaN'); 40 shouldBe("Number(new Date(new Date(1, 1, Infinity, 1, 1, 1, 1, 1, 1)))", 'Number.NaN'); 41 shouldBe("Number(new Date(new Date(1, 1, 1, Infinity, 1, 1, 1, 1, 1)))", 'Number.NaN'); 42 shouldBe("Number(new Date(new Date(1, 1, 1, 1, Infinity, 1, 1, 1, 1)))", 'Number.NaN'); 43 shouldBe("Number(new Date(new Date(1, 1, 1, 1, 1, Infinity, 1, 1, 1)))", 'Number.NaN'); 44 shouldBe("Number(new Date(new Date(1, 1, 1, 1, 1, 1, Infinity, 1, 1)))", 'Number.NaN'); 45 shouldBe("Number(new Date(new Date(1, 1, 1, 1, 1, 1, 1, 1, Infinity)))", '-2174741938999'); 46 38 47 // In Firefox, the results of the following tests are timezone-dependent, which likely implies that the implementation is not quite correct. 39 48 // Our results are even worse, though, as the dates are clipped: (new Date(1111, 1201).getTime()) == (new Date(1111, 601).getTime()) -
trunk/Source/JavaScriptCore/ChangeLog
r104266 r104267 1 2012-01-05 Gavin Barraclough <barraclough@apple.com> 2 3 Date constructor handles infinite values incorrectly. 4 https://bugs.webkit.org/show_bug.cgi?id=70998 5 6 Reviewed by Filip Pizlo. 7 8 * runtime/DateConstructor.cpp: 9 (JSC::constructDate): 10 - should be checking !finite rather then isnan. 11 1 12 2012-01-05 Gavin Barraclough <barraclough@apple.com> 2 13 -
trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp
r103083 r104267 126 126 args.at(6).toNumber(exec) 127 127 }; 128 if ( isnan(doubleArguments[0])129 || isnan(doubleArguments[1])130 || (numArgs >= 3 && isnan(doubleArguments[2]))131 || (numArgs >= 4 && isnan(doubleArguments[3]))132 || (numArgs >= 5 && isnan(doubleArguments[4]))133 || (numArgs >= 6 && isnan(doubleArguments[5]))134 || (numArgs >= 7 && isnan(doubleArguments[6])))128 if (!isfinite(doubleArguments[0]) 129 || !isfinite(doubleArguments[1]) 130 || (numArgs >= 3 && !isfinite(doubleArguments[2])) 131 || (numArgs >= 4 && !isfinite(doubleArguments[3])) 132 || (numArgs >= 5 && !isfinite(doubleArguments[4])) 133 || (numArgs >= 6 && !isfinite(doubleArguments[5])) 134 || (numArgs >= 7 && !isfinite(doubleArguments[6]))) 135 135 value = std::numeric_limits<double>::quiet_NaN(); 136 136 else {
Note: See TracChangeset
for help on using the changeset viewer.