From f9d17f772f21ec2896d5db8290c8b444faeb0fa0 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Thu, 26 Apr 2018 19:11:29 +0300 Subject: [PATCH] Fixed return value type for boolean functions. Previously, the functions returned "true" and "false" strings. --- njs/njs_array.c | 4 ++-- njs/njs_object.c | 34 +++++++++++++++++----------------- njs/test/njs_unit_test.c | 6 ++++++ 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/njs/njs_array.c b/njs/njs_array.c index 7010ed52..4d331073 100644 --- a/njs/njs_array.c +++ b/njs/njs_array.c @@ -295,10 +295,10 @@ njs_array_is_array(njs_vm_t *vm, njs_value_t *args, const njs_value_t *value; if (nargs > 1 && njs_is_array(&args[1])) { - value = &njs_string_true; + value = &njs_value_true; } else { - value = &njs_string_false; + value = &njs_value_false; } vm->retval = *value; diff --git a/njs/njs_object.c b/njs/njs_object.c index 1f66a246..ef0d791a 100644 --- a/njs/njs_object.c +++ b/njs/njs_object.c @@ -695,7 +695,7 @@ njs_object_get_own_property_descriptor(njs_vm_t *vm, njs_value_t *args, lhq.key = nxt_string_value("configurable"); lhq.key_hash = NJS_CONFIGURABLE_HASH; - setval = (prop->configurable == 1) ? &njs_string_true : &njs_string_false; + setval = (prop->configurable == 1) ? &njs_value_true : &njs_value_false; pr = njs_object_prop_alloc(vm, &njs_object_configurable_string, setval, 1); if (nxt_slow_path(pr == NULL)) { @@ -712,7 +712,7 @@ njs_object_get_own_property_descriptor(njs_vm_t *vm, njs_value_t *args, lhq.key = nxt_string_value("enumerable"); lhq.key_hash = NJS_ENUMERABLE_HASH; - setval = (prop->enumerable == 1) ? &njs_string_true : &njs_string_false; + setval = (prop->enumerable == 1) ? &njs_value_true : &njs_value_false; pr = njs_object_prop_alloc(vm, &njs_object_enumerable_string, setval, 1); if (nxt_slow_path(pr == NULL)) { @@ -729,7 +729,7 @@ njs_object_get_own_property_descriptor(njs_vm_t *vm, njs_value_t *args, lhq.key = nxt_string_value("writable"); lhq.key_hash = NJS_WRITABABLE_HASH; - setval = (prop->writable == 1) ? &njs_string_true : &njs_string_false; + setval = (prop->writable == 1) ? &njs_value_true : &njs_value_false; pr = njs_object_prop_alloc(vm, &njs_object_writable_string, setval, 1); if (nxt_slow_path(pr == NULL)) { @@ -826,11 +826,11 @@ njs_object_is_frozen(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, value = njs_arg(args, nargs, 1); if (!njs_is_object(value)) { - vm->retval = njs_string_true; + vm->retval = njs_value_true; return NXT_OK; } - retval = &njs_string_false; + retval = &njs_value_false; object = value->data.u.object; nxt_lvlhsh_each_init(&lhe, &njs_object_hash_proto); @@ -853,7 +853,7 @@ njs_object_is_frozen(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } } - retval = &njs_string_true; + retval = &njs_value_true; done: @@ -916,11 +916,11 @@ njs_object_is_sealed(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, value = njs_arg(args, nargs, 1); if (!njs_is_object(value)) { - vm->retval = njs_string_true; + vm->retval = njs_value_true; return NXT_OK; } - retval = &njs_string_false; + retval = &njs_value_false; object = value->data.u.object; nxt_lvlhsh_each_init(&lhe, &njs_object_hash_proto); @@ -943,7 +943,7 @@ njs_object_is_sealed(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } } - retval = &njs_string_true; + retval = &njs_value_true; done: @@ -983,12 +983,12 @@ njs_object_is_extensible(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, value = njs_arg(args, nargs, 1); if (!njs_is_object(value)) { - vm->retval = njs_string_false; + vm->retval = njs_value_false; return NXT_OK; } - retval = value->data.u.object->extensible ? &njs_string_true - : &njs_string_false; + retval = value->data.u.object->extensible ? &njs_value_true + : &njs_value_false; vm->retval = *retval; @@ -1490,7 +1490,7 @@ njs_object_prototype_has_own_property(njs_vm_t *vm, njs_value_t *args, const njs_value_t *value, *prop, *retval; nxt_lvlhsh_query_t lhq; - retval = &njs_string_false; + retval = &njs_value_false; value = &args[0]; if (njs_is_object(value)) { @@ -1502,7 +1502,7 @@ njs_object_prototype_has_own_property(njs_vm_t *vm, njs_value_t *args, index = njs_string_to_index(prop); if (index < array->length && njs_is_valid(&array->start[index])) { - retval = &njs_string_true; + retval = &njs_value_true; goto done; } } @@ -1514,7 +1514,7 @@ njs_object_prototype_has_own_property(njs_vm_t *vm, njs_value_t *args, ret = nxt_lvlhsh_find(&value->data.u.object->hash, &lhq); if (ret == NXT_OK) { - retval = &njs_string_true; + retval = &njs_value_true; } } @@ -1533,7 +1533,7 @@ njs_object_prototype_is_prototype_of(njs_vm_t *vm, njs_value_t *args, njs_object_t *object, *proto; const njs_value_t *value, *obj, *retval; - retval = &njs_string_false; + retval = &njs_value_false; value = &args[0]; obj = njs_arg(args, nargs, 1); @@ -1545,7 +1545,7 @@ njs_object_prototype_is_prototype_of(njs_vm_t *vm, njs_value_t *args, object = object->__proto__; if (object == proto) { - retval = &njs_string_true; + retval = &njs_value_true; break; } diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 88fdfb7e..96c11f44 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -2852,9 +2852,15 @@ static njs_unit_test_t njs_test[] = { nxt_string("Array.isArray(1)"), nxt_string("false") }, + { nxt_string("Array.isArray(1) ? 'true' : 'false'"), + nxt_string("false") }, + { nxt_string("Array.isArray([])"), nxt_string("true") }, + { nxt_string("Array.isArray([]) ? 'true' : 'false'"), + nxt_string("true") }, + { nxt_string("Array.of()"), nxt_string("") }, -- 2.47.3