Mercurial > njs
changeset 163:c0aa3ecd2e83
An invalid value of Date object has been fixed.
| author | Igor Sysoev <igor@sysoev.ru> |
|---|---|
| date | Wed, 31 Aug 2016 15:53:13 +0300 |
| parents | 47f4830c3d22 |
| children | 76f16f0ef6c5 |
| files | njs/njs_date.c njs/test/njs_unit_test.c |
| diffstat | 2 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/njs/njs_date.c Tue Aug 30 12:11:24 2016 +0300 +++ b/njs/njs_date.c Wed Aug 31 15:53:13 2016 +0300 @@ -81,8 +81,8 @@ 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 @@ 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 @@ } } + done: + date = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_date_t)); if (nxt_slow_path(date == NULL)) { return NXT_ERROR;
--- a/njs/test/njs_unit_test.c Tue Aug 30 12:11:24 2016 +0300 +++ b/njs/test/njs_unit_test.c Wed Aug 31 15:53:13 2016 +0300 @@ -4465,6 +4465,9 @@ { 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") },
