]> git.kaiwu.me - njs.git/commitdiff
Fixed typeof for object_value type.
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 22 Nov 2018 16:32:48 +0000 (19:32 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Thu, 22 Nov 2018 16:32:48 +0000 (19:32 +0300)
njs/njs_object.c
njs/njs_vm.c
njs/njs_vm.h
njs/test/njs_unit_test.c

index e99725b361867f0d7fa9be7062122bfe1b9e0da7..09417bfa88bb6eb449d2ec9690b7ef01e22052af 100644 (file)
@@ -2098,7 +2098,7 @@ njs_object_prototype_to_string(njs_vm_t *vm, njs_value_t *args,
 {
     const njs_value_t  *name;
 
-    static const njs_value_t  *class_name[] = {
+    static const njs_value_t  *class_name[NJS_TYPE_MAX] = {
         /* Primitives. */
         &njs_object_null_string,
         &njs_object_undefined_string,
index 819271d40f269a8efe342dbd62a76ff954bcdc70..760c51a4280a5ecc16a5023a36416306534f8650 100644 (file)
@@ -1024,7 +1024,7 @@ njs_vmcode_typeof(njs_vm_t *vm, njs_value_t *value, njs_value_t *invld)
 
     /* ECMAScript 5.1: null, array and regexp are objects. */
 
-    static const njs_value_t  *types[] = {
+    static const njs_value_t  *types[NJS_TYPE_MAX] = {
         &njs_string_object,
         &njs_string_void,
         &njs_string_boolean,
@@ -1058,6 +1058,7 @@ njs_vmcode_typeof(njs_vm_t *vm, njs_value_t *value, njs_value_t *invld)
         &njs_string_object,
         &njs_string_object,
         &njs_string_object,
+        &njs_string_object,
     };
 
     /* A zero index means non-declared variable. */
index 137077a8a7716a3232dcb9002088bf7bb44cb497..92527948cbe3be0a073538004ad7aca45a2452f9 100644 (file)
@@ -134,6 +134,7 @@ typedef enum {
     NJS_OBJECT_TYPE_ERROR     = 0x1e,
     NJS_OBJECT_URI_ERROR      = 0x1f,
     NJS_OBJECT_VALUE          = 0x20,
+#define NJS_TYPE_MAX         (NJS_OBJECT_VALUE + 1)
 } njs_value_type_t;
 
 
index 980e9f27bb0ed4d2755721f22a057c4dfd7ffa92..83ceaa3966a9d68fee06c18489579ae506f5a7cd 100644 (file)
@@ -10302,7 +10302,10 @@ static njs_unit_test_t  njs_test[] =
                  "h.update('A').digest('hex'); h.update('B')"),
       nxt_string("Error: Digest already called") },
 
-    /* require('crypto').createHash() */
+    { nxt_string("typeof require('crypto').createHash('md5')"),
+      nxt_string("object") },
+
+    /* require('crypto').createHmac() */
 
     { nxt_string("require('crypto').createHmac('sha1', '')"),
       nxt_string("[object Hmac]") },
@@ -10411,6 +10414,9 @@ static njs_unit_test_t  njs_test[] =
                  "h.update('A').digest('hex'); h.update('B')"),
       nxt_string("Error: Digest already called") },
 
+    { nxt_string("typeof require('crypto').createHmac('md5', 'a')"),
+      nxt_string("object") },
+
     /* setTimeout(). */
 
     { nxt_string("setTimeout()"),