From: Dmitry Volyntsev Date: Thu, 22 Nov 2018 16:32:48 +0000 (+0300) Subject: Fixed typeof for object_value type. X-Git-Tag: 0.2.6~3 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=7efa239ddfea9db185a43aeaa790b38c6ade6a9a;p=njs.git Fixed typeof for object_value type. --- diff --git a/njs/njs_object.c b/njs/njs_object.c index e99725b3..09417bfa 100644 --- a/njs/njs_object.c +++ b/njs/njs_object.c @@ -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, diff --git a/njs/njs_vm.c b/njs/njs_vm.c index 819271d4..760c51a4 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -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. */ diff --git a/njs/njs_vm.h b/njs/njs_vm.h index 137077a8..92527948 100644 --- a/njs/njs_vm.h +++ b/njs/njs_vm.h @@ -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; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 980e9f27..83ceaa39 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -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()"),