/* * Copyright (C) Igor Sysoev */ #include #include void *ngx_list_push(ngx_list_t *l) { void *elt; ngx_list_part_t *last; last = l->last; if (last->nelts == l->nalloc) { /* the last part is full, allocate a new list part */ if (!(last = ngx_palloc(l->pool, sizeof(ngx_list_part_t)))) { return NULL; } if (!(last->elts = ngx_palloc(l->pool, l->nalloc * l->size))) { return NULL; } last->nelts = 0; last->next = NULL; l->last->next = last; l->last = last; } elt = (char *) last->elts + l->size * last->nelts; last->nelts++; return elt; }