aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2006-10-11 12:47:11 +0000
committerIgor Sysoev <igor@sysoev.ru>2006-10-11 12:47:11 +0000
commit35d5272e3a9ac165aaee9e354312b88f8fcbc13d (patch)
treecd281846a232e846393764df758c7d9c1facbd13
parentd40ee41c095cd8850fe6e18d9111918a622bcb88 (diff)
downloadnginx-35d5272e3a9ac165aaee9e354312b88f8fcbc13d.tar.gz
nginx-35d5272e3a9ac165aaee9e354312b88f8fcbc13d.zip
ngx_list_create()
-rw-r--r--src/core/ngx_list.c29
-rw-r--r--src/core/ngx_list.h7
2 files changed, 32 insertions, 4 deletions
diff --git a/src/core/ngx_list.c b/src/core/ngx_list.c
index c082afa37..84bc00263 100644
--- a/src/core/ngx_list.c
+++ b/src/core/ngx_list.c
@@ -8,7 +8,34 @@
#include <ngx_core.h>
-void *ngx_list_push(ngx_list_t *l)
+ngx_list_t *
+ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size)
+{
+ ngx_list_t *list;
+
+ list = ngx_palloc(pool, sizeof(ngx_list_t));
+ if (list == NULL) {
+ return NULL;
+ }
+
+ list->part.elts = ngx_palloc(pool, n * size);
+ if (list->part.elts == NULL) {
+ return NULL;
+ }
+
+ list->part.nelts = 0;
+ list->part.next = NULL;
+ list->last = &list->part;
+ list->size = size;
+ list->nalloc = n;
+ list->pool = pool;
+
+ return list;
+}
+
+
+void *
+ngx_list_push(ngx_list_t *l)
{
void *elt;
ngx_list_part_t *last;
diff --git a/src/core/ngx_list.h b/src/core/ngx_list.h
index c030cf293..75db86886 100644
--- a/src/core/ngx_list.h
+++ b/src/core/ngx_list.h
@@ -30,9 +30,10 @@ typedef struct {
} ngx_list_t;
-static ngx_inline
-ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n,
- size_t size)
+ngx_list_t *ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size);
+
+static ngx_inline ngx_int_t
+ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size)
{
list->part.elts = ngx_palloc(pool, n * size);
if (list->part.elts == NULL) {