From: Valentin Bartenev Date: Mon, 6 May 2019 18:24:31 +0000 (+0300) Subject: Fixed return value on deleting non-existent property. X-Git-Tag: 0.3.2~21 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=8300fc162cabbfaa195111c3baa8ad3bef2fb514;p=njs.git Fixed return value on deleting non-existent property. --- diff --git a/njs/njs_vm.c b/njs/njs_vm.c index 0e9675d0..00fa2dc3 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -712,12 +712,9 @@ njs_vmcode_property_delete(njs_vm_t *vm, njs_value_t *object, 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, njs_value_t *object, 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, njs_value_t *object, return ret; } - retval = &njs_value_true; goto done; } @@ -768,8 +763,6 @@ njs_vmcode_property_delete(njs_vm_t *vm, njs_value_t *object, 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, njs_value_t *object, done: - vm->retval = *retval; + vm->retval = njs_value_true; return sizeof(njs_vmcode_3addr_t); } diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 366f1863..9abf5ed9 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -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") },