return NXT_ERROR;
}
- ev = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_extern_value_t));
+ ev = nxt_mem_cache_align(vm->mem_cache_pool, sizeof(njs_value_t),
+ sizeof(njs_extern_value_t));
if (nxt_slow_path(ev == NULL)) {
return NXT_ERROR;
}
+ ev->value = *value;
ev->name = *var_name;
- ev->value = value;
lhq.key = *var_name;
lhq.key_hash = nxt_djb_hash(lhq.key.start, lhq.key.length);
if (nxt_lvlhsh_find(&vm->externals_hash, &lhq) == NXT_OK) {
ev = (njs_extern_value_t *) lhq.value;
- return ev->value;
+ return &ev->value;
}
return NULL;
uint32_t a;
nxt_mem_cache_pool_t *mem_cache_pool;
const njs_extern_t *proto;
+
+ njs_opaque_value_t value;
} njs_unit_test_req_t;
nxt_int_t ret;
nxt_uint_t i;
const njs_extern_t *proto;
- njs_opaque_value_t *values;
njs_unit_test_req_t *requests;
proto = njs_vm_external_prototype(vm, &nxt_test_external[0]);
return NXT_ERROR;
}
- values = nxt_mem_cache_zalloc(vm->mem_cache_pool,
- nxt_nitems(nxt_test_requests)
- * sizeof(njs_opaque_value_t));
- if (values == NULL) {
- return NXT_ERROR;
- }
-
requests = nxt_mem_cache_zalloc(vm->mem_cache_pool,
nxt_nitems(nxt_test_requests)
* sizeof(njs_unit_test_req_t));
requests[i].mem_cache_pool = vm->mem_cache_pool;
requests[i].proto = proto;
- ret = njs_vm_external_create(vm, &values[i], proto, &requests[i]);
+ ret = njs_vm_external_create(vm, &requests[i].value, proto,
+ &requests[i]);
if (ret != NXT_OK) {
printf("njs_vm_external_create() failed\n");
return NXT_ERROR;
}
- ret = njs_vm_external_bind(vm, &nxt_test_requests[i].name, &values[i]);
+ ret = njs_vm_external_bind(vm, &nxt_test_requests[i].name,
+ &requests[i].value);
if (ret != NXT_OK) {
printf("njs_vm_external_bind() failed\n");
return NXT_ERROR;