blob: 236eff4f9518d9106084090fe3af58d4adde0cae [file] [log] [blame] [raw]
/*
* Copyright (C) Igor Sysoev
*/
#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;
}