aboutsummaryrefslogtreecommitdiff
path: root/src/njs_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/njs_module.c')
-rw-r--r--src/njs_module.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/njs_module.c b/src/njs_module.c
index 5af174f3..7d58972c 100644
--- a/src/njs_module.c
+++ b/src/njs_module.c
@@ -13,7 +13,7 @@ njs_module_hash_test(njs_lvlhsh_query_t *lhq, void *data)
{
njs_mod_t *module;
- module = data;
+ module = *(njs_mod_t **) data;
if (njs_strstr_eq(&lhq->key, &module->name)) {
return NJS_OK;
@@ -39,6 +39,7 @@ njs_module_find(njs_vm_t *vm, njs_str_t *name, njs_bool_t shared)
njs_int_t ret;
njs_mod_t *shrd, *module;
njs_object_t *object;
+ njs_object_prop_t *prop;
njs_lvlhsh_query_t lhq;
lhq.key = *name;
@@ -46,11 +47,11 @@ njs_module_find(njs_vm_t *vm, njs_str_t *name, njs_bool_t shared)
lhq.proto = &njs_modules_hash_proto;
if (njs_lvlhsh_find(&vm->modules_hash, &lhq) == NJS_OK) {
- return lhq.value;
+ return njs_prop_module(lhq.value);
}
if (njs_lvlhsh_find(&vm->shared->modules_hash, &lhq) == NJS_OK) {
- shrd = lhq.value;
+ shrd = njs_prop_module(lhq.value);
if (shared) {
return shrd;
@@ -70,13 +71,19 @@ njs_module_find(njs_vm_t *vm, njs_str_t *name, njs_bool_t shared)
}
lhq.replace = 0;
- lhq.value = module;
lhq.pool = vm->mem_pool;
ret = njs_lvlhsh_insert(&vm->modules_hash, &lhq);
- if (njs_fast_path(ret == NJS_OK)) {
- return module;
+ if (njs_slow_path(ret != NJS_OK)) {
+ return NULL;
}
+
+ prop = lhq.value;
+
+ prop->u.mod = module;
+
+ return module;
+
}
return NULL;
@@ -88,6 +95,7 @@ njs_module_add(njs_vm_t *vm, njs_str_t *name, njs_value_t *value)
{
njs_int_t ret;
njs_mod_t *module;
+ njs_object_prop_t *prop;
njs_lvlhsh_query_t lhq;
module = njs_mp_zalloc(vm->mem_pool, sizeof(njs_mod_t));
@@ -105,7 +113,6 @@ njs_module_add(njs_vm_t *vm, njs_str_t *name, njs_value_t *value)
lhq.replace = 0;
lhq.key = *name;
lhq.key_hash = njs_djb_hash(name->start, name->length);
- lhq.value = module;
lhq.pool = vm->mem_pool;
lhq.proto = &njs_modules_hash_proto;
@@ -115,6 +122,10 @@ njs_module_add(njs_vm_t *vm, njs_str_t *name, njs_value_t *value)
return NULL;
}
+ prop = lhq.value;
+
+ prop->u.mod = module;
+
if (value != NULL) {
njs_value_assign(&module->value, value);
module->function.native = 1;