From: Dmitry Volyntsev Date: Fri, 23 Mar 2018 11:02:22 +0000 (+0300) Subject: Fixed external_objects cloning. X-Git-Tag: 0.2.0~14 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=b14f39b1c7b28d638e72effe2be9428dc24537df;p=njs.git Fixed external_objects cloning. --- diff --git a/njs/njscript.c b/njs/njscript.c index 48bcef6b..aea0e2ac 100644 --- a/njs/njscript.c +++ b/njs/njscript.c @@ -323,6 +323,7 @@ njs_vm_clone(njs_vm_t *vm, njs_external_ptr_t external) njs_vm_t *nvm; uint32_t items; nxt_int_t ret; + nxt_array_t *externals; nxt_mem_cache_pool_t *nmcp; nxt_thread_log_debug("CLONE:"); @@ -352,19 +353,21 @@ njs_vm_clone(njs_vm_t *vm, njs_external_ptr_t external) nvm->external_prototypes_hash = vm->external_prototypes_hash; items = vm->external_objects->items; - nvm->external_objects = nxt_array_create(items + 4, sizeof(void *), - &njs_array_mem_proto, - vm->mem_cache_pool); - if (nxt_slow_path(vm->external_objects == NULL)) { + externals = nxt_array_create(items + 4, sizeof(void *), + &njs_array_mem_proto, nvm->mem_cache_pool); + + if (nxt_slow_path(externals == NULL)) { return NULL; } if (items > 0) { - memcpy(nvm->external_objects->start, vm->external_objects->start, + memcpy(externals->start, vm->external_objects->start, items * sizeof(void *)); - vm->external_objects->items = items; + externals->items = items; } + nvm->external_objects = externals; + nvm->ops = vm->ops; nvm->current = vm->current;