Quellcode durchsuchen

Fix #1318. Date.UTC should return NaN with <= 2 arguments.

Doug Ilijev vor 9 Jahren
Ursprung
Commit
4f6aa2081c

+ 8 - 0
lib/Runtime/Library/DateImplementation.cpp

@@ -1581,6 +1581,14 @@ LError:
         double dblT;
         uint ivar;
 
+        // See: https://github.com/Microsoft/ChakraCore/issues/1318
+        // Date.UTC should return NaN with < 2 arguments.
+        // args.Info.Count includes an implicit first parameter, so we check for Count <= 2.
+        if (args.Info.Count <= 2)
+        {
+            return JavascriptNumber::NaN;
+        }
+
         for (ivar = 0; (ivar < (args.Info.Count-1)) && ivar < kcvarMax; ++ivar)
         {
             rgdbl[ivar] = JavascriptConversion::ToNumber(args[ivar+1],scriptContext);

+ 2 - 3
lib/Runtime/Library/JavascriptDate.cpp

@@ -829,11 +829,10 @@ namespace Js
 
         ARGUMENTS(args, callInfo);
         ScriptContext* scriptContext = function->GetScriptContext();
-
         Assert(!(callInfo.Flags & CallFlags_New));
 
-        double dblRetVal = DateImplementation::DateFncUTC(scriptContext,args);
-        return JavascriptNumber::ToVarNoCheck(dblRetVal,scriptContext);
+        double dblRetVal = DateImplementation::DateFncUTC(scriptContext, args);
+        return JavascriptNumber::ToVarNoCheck(dblRetVal, scriptContext);
     }
 
     double JavascriptDate::ParseHelper(ScriptContext *scriptContext, JavascriptString *str)

+ 3 - 3
test/Date/dateutc.baseline

@@ -1,5 +1,5 @@
-126230400000
-126230400000
+NaN
+NaN
 149817600000
 151804800000
 151804800000
@@ -10,4 +10,4 @@
 -2151877169960
 151806030040
 NaN
--2208988800000
+NaN