#include <ngx_config.h> | |
#include <ngx_core.h> | |
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; | |
} |