diff options
author | Igor Sysoev <igor@sysoev.ru> | 2008-11-25 14:25:20 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2008-11-25 14:25:20 +0000 |
commit | 65eba4b692e4f3846b7f3e9824f03c9767cf25f6 (patch) | |
tree | 9d62d594b58289b8d68555cff8b5b6d0bd685c38 | |
parent | ecbb69ad7f775a71d82d5b1c79493e33913a4620 (diff) | |
download | nginx-65eba4b692e4f3846b7f3e9824f03c9767cf25f6.tar.gz |
ngx_reset_pool()
-rw-r--r-- | src/core/ngx_palloc.c | 20 | ||||
-rw-r--r-- | src/core/ngx_palloc.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/core/ngx_palloc.c b/src/core/ngx_palloc.c index ce826bab6..7c89fda70 100644 --- a/src/core/ngx_palloc.c +++ b/src/core/ngx_palloc.c @@ -91,6 +91,26 @@ ngx_destroy_pool(ngx_pool_t *pool) } +void +ngx_reset_pool(ngx_pool_t *pool) +{ + ngx_pool_t *p; + ngx_pool_large_t *l; + + for (l = pool->large; l; l = l->next) { + if (l->alloc) { + ngx_free(l->alloc); + } + } + + pool->large = NULL; + + for (p = pool; p; p = p->d.next) { + p->d.last = (u_char *) p + sizeof(ngx_pool_t); + } +} + + void * ngx_palloc(ngx_pool_t *pool, size_t size) { diff --git a/src/core/ngx_palloc.h b/src/core/ngx_palloc.h index 2b3a30cbd..434f9728b 100644 --- a/src/core/ngx_palloc.h +++ b/src/core/ngx_palloc.h @@ -73,6 +73,7 @@ void *ngx_calloc(size_t size, ngx_log_t *log); ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log); void ngx_destroy_pool(ngx_pool_t *pool); +void ngx_reset_pool(ngx_pool_t *pool); void *ngx_palloc(ngx_pool_t *pool, size_t size); void *ngx_pnalloc(ngx_pool_t *pool, size_t size); |