From: Igor Sysoev Date: Sat, 9 Apr 2016 09:21:31 +0000 (+0300) Subject: Old array data are freed after array relocation. X-Git-Tag: 0.1.0~35 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=b9a54be32382b71e6b71aa93db47270e4d11cd90;p=njs.git Old array data are freed after array relocation. --- diff --git a/njs/njs_array.c b/njs/njs_array.c index 8fdf974f..45b6b8fa 100644 --- a/njs/njs_array.c +++ b/njs/njs_array.c @@ -143,7 +143,7 @@ njs_array_realloc(njs_vm_t *vm, njs_array_t *array, uint32_t prepend, uint32_t size) { nxt_uint_t n; - njs_value_t *value; + njs_value_t *value, *old; if (size != array->size) { if (size < 16) { @@ -160,8 +160,7 @@ njs_array_realloc(njs_vm_t *vm, njs_array_t *array, uint32_t prepend, return NXT_ERROR; } - /* GC: old = array->data */ - + old = array->data; array->data = value; while (prepend != 0) { @@ -185,7 +184,7 @@ njs_array_realloc(njs_vm_t *vm, njs_array_t *array, uint32_t prepend, size--; } - /* GC: free old pointer. */ + nxt_mem_cache_free(vm->mem_cache_pool, old); return NXT_OK; }