| ngx_array_t *ngx_create_array(ngx_pool_t *p, int n, size_t size) |
| a = ngx_palloc(p, sizeof(ngx_array_t)); |
| a->elts = ngx_palloc(p, n * size); |
| void ngx_destroy_array(ngx_array_t *a) |
| if (a->elts + a->size * a->nalloc == p->last) |
| p->last -= a->size * a->nalloc; |
| if ((char *) a + sizeof(ngx_array_t) == p->last) |
| void *ngx_push_array(ngx_array_t *a) |
| if (a->nelts == a->nalloc) { |
| /* array allocation is the last in the pool */ |
| if (a->elts + a->size * a->nelts == p->last |
| && (unsigned) (p->end - p->last) >= a->size) |
| void *new = ngx_palloc(p, 2 * a->nalloc * a->size); |
| memcpy(new, a->elts, a->nalloc * a->size); |
| elt = a->elts + a->size * a->nelts; |