Welcome! Log In Create A New Profile

Advanced

[njs] Fixed Object.defineProperty() for non-boolean descriptor props.

Dmitry Volyntsev
August 07, 2019 11:08AM
details: https://hg.nginx.org/njs/rev/05fb6e4fdb36
branches:
changeset: 1113:05fb6e4fdb36
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Wed Aug 07 17:23:47 2019 +0300
description:
Fixed Object.defineProperty() for non-boolean descriptor props.

diffstat:

src/njs_object_prop.c | 6 +++---
src/test/njs_unit_test.c | 5 +++++
2 files changed, 8 insertions(+), 3 deletions(-)

diffs (45 lines):

diff -r 90b8adf370d4 -r 05fb6e4fdb36 src/njs_object_prop.c
--- a/src/njs_object_prop.c Wed Aug 07 15:17:57 2019 +0300
+++ b/src/njs_object_prop.c Wed Aug 07 17:23:47 2019 +0300
@@ -378,7 +378,7 @@ njs_descriptor_prop(njs_vm_t *vm, const
pr = njs_object_property(vm, desc, &pq);
if (pr != NULL) {
data = 1;
- prop->writable = pr->value.data.truth;
+ prop->writable = njs_is_true(&pr->value);
}

pq.key = njs_str_value("enumerable");
@@ -386,7 +386,7 @@ njs_descriptor_prop(njs_vm_t *vm, const

pr = njs_object_property(vm, desc, &pq);
if (pr != NULL) {
- prop->enumerable = pr->value.data.truth;
+ prop->enumerable = njs_is_true(&pr->value);
}

pq.key = njs_str_value("configurable");
@@ -394,7 +394,7 @@ njs_descriptor_prop(njs_vm_t *vm, const

pr = njs_object_property(vm, desc, &pq);
if (pr != NULL) {
- prop->configurable = pr->value.data.truth;
+ prop->configurable = njs_is_true(&pr->value);
}

if (accessor && data) {
diff -r 90b8adf370d4 -r 05fb6e4fdb36 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c Wed Aug 07 15:17:57 2019 +0300
+++ b/src/test/njs_unit_test.c Wed Aug 07 17:23:47 2019 +0300
@@ -9545,6 +9545,11 @@ static njs_unit_test_t njs_test[] =
{ njs_str("var o = {}; Object.defineProperty(o, 'a', Object.create({value:1})); o.a"),
njs_str("1") },

+ { njs_str("var o = {}; Object.defineProperty(o, 'a', {writable:'x', enumerable:'y', configurable:'z'});"
+ "var d = Object.getOwnPropertyDescriptor(o, 'a');"
+ "d.writable && d.enumerable && d.configurable"),
+ njs_str("true") },
+
{ njs_str("var o = {a:1, c:2}; Object.defineProperty(o, 'b', {});"
"Object.keys(o)"),
njs_str("a,c") },
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Fixed Object.defineProperty() for non-boolean descriptor props.

Dmitry Volyntsev 236 August 07, 2019 11:08AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 170
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready