From: Igor Sysoev Date: Wed, 31 Aug 2016 12:53:13 +0000 (+0300) Subject: An invalid value of Date object has been fixed. X-Git-Tag: 0.1.2~8 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=5c83c98da801ae13a40ee19c88f7bade9f8f693f;p=njs.git An invalid value of Date object has been fixed. --- diff --git a/njs/njs_date.c b/njs/njs_date.c index 2bac3f4e..93b5c81d 100644 --- a/njs/njs_date.c +++ b/njs/njs_date.c @@ -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; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index a761a713..69d6f29a 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -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") },