Valentin Bartenev
May 06, 2019 02:26PM
details: https://hg.nginx.org/njs/rev/96c78f35a809
branches:
changeset: 952:96c78f35a809
user: Valentin Bartenev <vbart@nginx.com>
date: Mon May 06 21:24:31 2019 +0300
description:
Fixed return value on deleting non-existent property.

diffstat:

njs/njs_vm.c | 9 +--------
njs/test/njs_unit_test.c | 11 ++++++++++-
2 files changed, 11 insertions(+), 9 deletions(-)

diffs (78 lines):

diff -r f876e5d1be41 -r 96c78f35a809 njs/njs_vm.c
--- a/njs/njs_vm.c Mon May 06 20:26:58 2019 +0300
+++ b/njs/njs_vm.c Mon May 06 21:24:31 2019 +0300
@@ -712,12 +712,9 @@ njs_vmcode_property_delete(njs_vm_t *vm,
njs_value_t *property)
{
njs_ret_t ret;
- const njs_value_t *retval;
njs_object_prop_t *prop;
njs_property_query_t pq;

- retval = &njs_value_false;
-
njs_property_query_init(&pq, NJS_PROPERTY_QUERY_DELETE, 1);

ret = njs_property_query(vm, &pq, object, property);
@@ -734,7 +731,6 @@ njs_vmcode_property_delete(njs_vm_t *vm,

case NJS_PROPERTY_REF:
njs_set_invalid(prop->value.data.u.value);
- retval = &njs_value_true;
goto done;

case NJS_PROPERTY_HANDLER:
@@ -744,7 +740,6 @@ njs_vmcode_property_delete(njs_vm_t *vm,
return ret;
}

- retval = &njs_value_true;
goto done;
}

@@ -768,8 +763,6 @@ njs_vmcode_property_delete(njs_vm_t *vm,
prop->type = NJS_WHITEOUT;
njs_set_invalid(&prop->value);

- retval = &njs_value_true;
-
break;

case NXT_DECLINED:
@@ -784,7 +777,7 @@ njs_vmcode_property_delete(njs_vm_t *vm,

done:

- vm->retval = *retval;
+ vm->retval = njs_value_true;

return sizeof(njs_vmcode_3addr_t);
}
diff -r f876e5d1be41 -r 96c78f35a809 njs/test/njs_unit_test.c
--- a/njs/test/njs_unit_test.c Mon May 06 20:26:58 2019 +0300
+++ b/njs/test/njs_unit_test.c Mon May 06 21:24:31 2019 +0300
@@ -3128,6 +3128,15 @@ static njs_unit_test_t njs_test[] =
{ nxt_string("delete 1"),
nxt_string("true") },

+ { nxt_string("var a = []; delete a[1]"),
+ nxt_string("true") },
+
+ { nxt_string("var o = {}; [delete o.m, delete o.m]"),
+ nxt_string("true,true") },
+
+ { nxt_string("[delete Array.nonexistent, delete Array.Array]"),
+ nxt_string("true,true") },
+
{ nxt_string("var a; delete (a = 1); a"),
nxt_string("1") },

@@ -3261,7 +3270,7 @@ static njs_unit_test_t njs_test[] =
nxt_string("1,2,34") },

{ nxt_string("delete[]['4e9']"),
- nxt_string("false") },
+ nxt_string("true") },

{ nxt_string("var n = 1, a = [ n += 1 ]; a"),
nxt_string("2") },
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Fixed return value on deleting non-existent property.

Valentin Bartenev 373 May 06, 2019 02:26PM



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

Online Users

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