From: Dmitry Volyntsev Date: Tue, 3 Jul 2018 11:15:29 +0000 (+0300) Subject: Fixed Number() with boolean, null and undefined arguments. X-Git-Tag: 0.2.3~24 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=9ed0ba67627d7076523f4f9050edcc9c1639b20b;p=njs.git Fixed Number() with boolean, null and undefined arguments. This fixes #25 issue on GitHub. --- diff --git a/njs/njs_number.c b/njs/njs_number.c index b49e8d44..54684d29 100644 --- a/njs/njs_number.c +++ b/njs/njs_number.c @@ -377,7 +377,7 @@ njs_number_constructor(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } if (vm->top_frame->ctor) { - object = njs_object_value_alloc(vm, value, value->type); + object = njs_object_value_alloc(vm, value, NJS_NUMBER); if (nxt_slow_path(object == NULL)) { return NXT_ERROR; } @@ -387,7 +387,7 @@ njs_number_constructor(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, vm->retval.data.truth = 1; } else { - vm->retval = *value; + njs_value_number_set(&vm->retval, value->data.u.number); } return NXT_OK; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 1490b37c..b82085f8 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -6117,6 +6117,30 @@ static njs_unit_test_t njs_test[] = { nxt_string("new Number"), nxt_string("0") }, + { nxt_string("new Number(undefined)"), + nxt_string("NaN") }, + + { nxt_string("new Number(null)"), + nxt_string("0") }, + + { nxt_string("new Number(true)"), + nxt_string("1") }, + + { nxt_string("new Number(false)"), + nxt_string("0") }, + + { nxt_string("Number(undefined)"), + nxt_string("NaN") }, + + { nxt_string("Number(null)"), + nxt_string("0") }, + + { nxt_string("Number(true)"), + nxt_string("1") }, + + { nxt_string("Number(false)"), + nxt_string("0") }, + { nxt_string("Number(123)"), nxt_string("123") },