Mercurial > hg > nginx-quic
changeset 3177:adc4fc0c3cc3
Linux/SPARC malloc() returns an address aligned to 8. This conflicts with
our SPARC 16-byte alignment and some allocations may be done out of pool.
ngx_memalign(ngx_pagesize) fixes this issue.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 30 Sep 2009 12:56:44 +0000 |
parents | 60bc5cc68d3b |
children | 975f0558aab3 |
files | src/core/nginx.c src/core/ngx_palloc.c |
diffstat | 2 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/nginx.c +++ b/src/core/nginx.c @@ -280,6 +280,9 @@ main(int argc, char *const *argv) init_cycle.log = log; ngx_cycle = &init_cycle; + /* dummy pagesize to create aligned pool */ + ngx_pagesize = 1024; + init_cycle.pool = ngx_create_pool(1024, log); if (init_cycle.pool == NULL) { return 1;
--- a/src/core/ngx_palloc.c +++ b/src/core/ngx_palloc.c @@ -17,7 +17,7 @@ ngx_create_pool(size_t size, ngx_log_t * { ngx_pool_t *p; - p = ngx_alloc(size, log); + p = ngx_memalign(ngx_pagesize, size, log); if (p == NULL) { return NULL; } @@ -181,7 +181,7 @@ ngx_palloc_block(ngx_pool_t *pool, size_ psize = (size_t) (pool->d.end - (u_char *) pool); - m = ngx_alloc(psize, pool->log); + m = ngx_memalign(ngx_pagesize, psize, pool->log); if (m == NULL) { return NULL; } @@ -219,7 +219,7 @@ ngx_palloc_large(ngx_pool_t *pool, size_ ngx_uint_t n; ngx_pool_large_t *large; - p = ngx_alloc(size, pool->log); + p = ngx_memalign(ngx_pagesize, size, pool->log); if (p == NULL) { return NULL; }