Welcome! Log In Create A New Profile

Advanced

[njs] Fixed TypeError message in ValidateAndApplyPropertyDescriptor().

Dmitry Volyntsev
November 27, 2019 11:48AM
details: https://hg.nginx.org/njs/rev/24b5c0103726
branches:
changeset: 1267:24b5c0103726
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Wed Nov 27 18:28:13 2019 +0300
description:
Fixed TypeError message in ValidateAndApplyPropertyDescriptor().

For Symbol key when object is not extensible.

diffstat:

src/njs_object_prop.c | 1 +
src/njs_value.c | 1 +
src/test/njs_unit_test.c | 7 +++++++
3 files changed, 9 insertions(+), 0 deletions(-)

diffs (46 lines):

diff -r 4b2b845c3bad -r 24b5c0103726 src/njs_object_prop.c
--- a/src/njs_object_prop.c Wed Nov 27 16:51:29 2019 +0300
+++ b/src/njs_object_prop.c Wed Nov 27 18:28:13 2019 +0300
@@ -158,6 +158,7 @@ njs_object_prop_define(njs_vm_t *vm, njs
if (njs_fast_path(ret == NJS_DECLINED)) {

if (!njs_object(object)->extensible) {
+ njs_key_string_get(vm, &pq.key, &pq.lhq.key);
njs_type_error(vm, "Cannot add property \"%V\", "
"object is not extensible", &pq.lhq.key);
return NJS_ERROR;
diff -r 4b2b845c3bad -r 24b5c0103726 src/njs_value.c
--- a/src/njs_value.c Wed Nov 27 16:51:29 2019 +0300
+++ b/src/njs_value.c Wed Nov 27 18:28:13 2019 +0300
@@ -1125,6 +1125,7 @@ njs_value_property_set(njs_vm_t *vm, njs
}

if (njs_slow_path(!njs_object(value)->extensible)) {
+ njs_key_string_get(vm, &pq.key, &pq.lhq.key);
njs_type_error(vm, "Cannot add property \"%V\", "
"object is not extensible", &pq.lhq.key);
return NJS_ERROR;
diff -r 4b2b845c3bad -r 24b5c0103726 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c Wed Nov 27 16:51:29 2019 +0300
+++ b/src/test/njs_unit_test.c Wed Nov 27 18:28:13 2019 +0300
@@ -11962,6 +11962,10 @@ static njs_unit_test_t njs_test[] =
"Object.defineProperty(o, 'b', {value:1})"),
njs_str("TypeError: Cannot add property \"b\", object is not extensible") },

+ { njs_str("var o = Object.preventExtensions({});"
+ "Object.defineProperty(o, Symbol.unscopables, {})"),
+ njs_str("TypeError: Cannot add property \"Symbol(Symbol.unscopables)\", object is not extensible") },
+
{ njs_str("var o = Object.preventExtensions({a:1});"
"Object.defineProperties(o, {b:{value:1}})"),
njs_str("TypeError: Cannot add property \"b\", object is not extensible") },
@@ -11975,6 +11979,9 @@ static njs_unit_test_t njs_test[] =
{ njs_str("var o = Object.preventExtensions({a:1}); o.b = 1; o.b"),
njs_str("TypeError: Cannot add property \"b\", object is not extensible") },

+ { njs_str("var o = Object.preventExtensions({a:1}); o[Symbol.unscopables] = 1"),
+ njs_str("TypeError: Cannot add property \"Symbol(Symbol.unscopables)\", object is not extensible") },
+
{ njs_str("Object.preventExtensions()"),
njs_str("undefined") },

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Fixed TypeError message in ValidateAndApplyPropertyDescriptor().

Dmitry Volyntsev 317 November 27, 2019 11:48AM



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

Online Users

Guests: 272
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