]> git.kaiwu.me - njs.git/commitdiff
Fixed "global" property handler when deleting.
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 27 Jun 2024 02:12:38 +0000 (19:12 -0700)
committerDmitry Volyntsev <xeioexception@gmail.com>
Tue, 2 Jul 2024 02:32:35 +0000 (19:32 -0700)
This fixes #734 issue.

src/njs_builtin.c
src/test/njs_unit_test.c

index 6c38cbee07c54e0bf32e396bfa6a412c3a74cc7e..3ff6f54755afa72b3207dbba3b0e3b79b99df66d 100644 (file)
@@ -783,13 +783,14 @@ njs_global_this_object(njs_vm_t *vm, njs_object_prop_t *self,
     njs_object_prop_t   *prop;
     njs_lvlhsh_query_t  lhq;
 
+    if (retval == NULL) {
+        return NJS_DECLINED;
+    }
+
     njs_value_assign(retval, global);
 
     if (njs_slow_path(setval != NULL)) {
         njs_value_assign(retval, setval);
-
-    } else if (njs_slow_path(retval == NULL)) {
-        return NJS_DECLINED;
     }
 
     prop = njs_object_prop_alloc(vm, &self->name, retval, 1);
index e63b03368a75f7c1ccee848991c8bda4ae73a0c3..96c922bc54efd8a7e9b8257f08dd25638b378743 100644 (file)
@@ -12885,6 +12885,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("var ex; try {({}) instanceof this} catch (e) {ex = e}; ex"),
       njs_str("TypeError: right argument is not callable") },
 
+    { njs_str("delete global.global; global"),
+      njs_str("ReferenceError: \"global\" is not defined") },
+
     { njs_str("njs"),
       njs_str("[object njs]") },