]> git.kaiwu.me - njs.git/commitdiff
An invalid value of Date object has been fixed.
authorIgor Sysoev <igor@sysoev.ru>
Wed, 31 Aug 2016 12:53:13 +0000 (15:53 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 31 Aug 2016 12:53:13 +0000 (15:53 +0300)
njs/njs_date.c
njs/test/njs_unit_test.c

index 2bac3f4ebe8ae0c6cd6b86b0aee1191b25b9ebdc..93b5c81d9371139be64910bc106211e14a7fac8e 100644 (file)
@@ -81,8 +81,8 @@ njs_ret_t
 njs_date_constructor(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
     njs_index_t unused)
 {
-    double      num;
-    int64_t     time, values[8];
+    double      num, time;
+    int64_t     values[8];
     nxt_uint_t  i, n;
     njs_date_t  *date;
     struct tm   tm;
@@ -110,8 +110,8 @@ njs_date_constructor(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
                 num = args[i].data.u.number;
 
                 if (njs_is_nan(num)) {
-                    nargs = 0;
-                    break;
+                    time = num;
+                    goto done;
                 }
 
                 values[i] = num;
@@ -138,6 +138,8 @@ njs_date_constructor(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
             }
         }
 
+    done:
+
         date = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_date_t));
         if (nxt_slow_path(date == NULL)) {
             return NXT_ERROR;
index a761a713253037f9e1df7c99c09deebb72f9c7e4..69d6f29a0147bf5ec0c74d25c7786975b89deb22 100644 (file)
@@ -4465,6 +4465,9 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("var o = Object.create(null); '__proto__' in o"),
       nxt_string("false") },
 
+    { nxt_string("var d = new Date(''); d +' '+ d.getTime()"),
+      nxt_string("Invalid Date NaN") },
+
     { nxt_string("var d = new Date(1308895200000); d.getTime()"),
       nxt_string("1308895200000") },