Array elements reallocation fixed.

This commit is contained in:
Max Romanov 2017-07-12 20:32:22 +03:00
parent 48afadfe7c
commit 288fa85431
2 changed files with 15 additions and 1 deletions

View file

@ -28,6 +28,17 @@ nxt_array_create(nxt_mp_t *mp, nxt_uint_t n, size_t size)
}
void
nxt_array_destroy(nxt_array_t *array)
{
if (array->elts != nxt_pointer_to(array, sizeof(nxt_array_t))) {
nxt_mp_free(array->mem_pool, array->elts);
}
nxt_mp_free(array->mem_pool, array);
}
void *
nxt_array_add(nxt_array_t *array)
{
@ -55,7 +66,9 @@ nxt_array_add(nxt_array_t *array)
nxt_memcpy(p, array->elts, array->size * nalloc);
if (array->elts != nxt_pointer_to(array, sizeof(nxt_array_t))) {
nxt_mp_free(array->mem_pool, array->elts);
}
array->elts = p;
array->nalloc = new_alloc;

View file

@ -20,6 +20,7 @@ typedef struct {
NXT_EXPORT nxt_array_t *nxt_array_create(nxt_mp_t *mp, nxt_uint_t n,
size_t size);
NXT_EXPORT void nxt_array_destroy(nxt_array_t *array);
NXT_EXPORT void *nxt_array_add(nxt_array_t *array);
NXT_EXPORT void *nxt_array_zero_add(nxt_array_t *array);
NXT_EXPORT void nxt_array_remove(nxt_array_t *array, void *elt);