]> git.kaiwu.me - njs.git/commitdiff
Fixed equality operator when both operands are objects.
authorValentin Bartenev <vbart@nginx.com>
Thu, 8 Nov 2018 17:32:45 +0000 (20:32 +0300)
committerValentin Bartenev <vbart@nginx.com>
Thu, 8 Nov 2018 17:32:45 +0000 (20:32 +0300)
njs/njs_vm.c
njs/test/njs_unit_test.c

index dd59ae060bb77612c387fa4b3da9d03eb8e60d26..1baf4dedc49786a34ceae8ccc86cfcc5a83bb537 100644 (file)
@@ -1543,6 +1543,10 @@ njs_values_equal(njs_vm_t *vm, const njs_value_t *val1, const njs_value_t *val2)
         return (val1->data.u.object == val2->data.u.object);
     }
 
+    if (njs_is_object(val1) && njs_is_object(val2)) {
+        return 0;
+    }
+
     return njs_trap(vm, NJS_TRAP_NUMBERS);
 }
 
index e35e43366ecce4f61ab9300eac5475366c9fc322..c8557381d345af4c6df159c642b08b02cfab283a 100644 (file)
@@ -1136,6 +1136,12 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("({}) == false"),
       nxt_string("false") },
 
+    { nxt_string("new Number(1) == new String('1')"),
+      nxt_string("false") },
+
+    { nxt_string("var a = Object; a == Object"),
+      nxt_string("true") },
+
     { nxt_string("var a = { valueOf: function() { return 5 } };   a == 5"),
       nxt_string("true") },