Mercurial > hg > nginx
changeset 1016:d0e8c81d3bb7
fix slab allocator on 64-bit platfroms
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 11 Jan 2007 18:58:40 +0000 |
parents | 32ebb6b13ff3 |
children | ee25c79bea34 |
files | src/core/ngx_slab.c |
diffstat | 1 files changed, 8 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_slab.c Thu Jan 11 18:57:09 2007 +0000 +++ b/src/core/ngx_slab.c Thu Jan 11 18:58:40 2007 +0000 @@ -128,7 +128,7 @@ pool->pages->prev = (uintptr_t) &pool->free; pool->start = (u_char *) - ngx_align((uintptr_t) p + pages * sizeof(ngx_slab_page_t), + ngx_align_ptr((uintptr_t) p + pages * sizeof(ngx_slab_page_t), ngx_pagesize); m = pages - (pool->end - pool->start) / ngx_pagesize; @@ -295,7 +295,7 @@ n = ngx_pagesize_shift - (page->slab & NGX_SLAB_SHIFT_MASK); n = 1 << n; - n = (1 << n) - 1; + n = ((uintptr_t) 1 << n) - 1; mask = n << NGX_SLAB_MAP_SHIFT; do { @@ -450,7 +450,7 @@ } n = ((uintptr_t) p & (ngx_pagesize - 1)) >> shift; - m = 1 << (n & (sizeof(uintptr_t) * 8 - 1)); + m = (uintptr_t) 1 << (n & (sizeof(uintptr_t) * 8 - 1)); n /= (sizeof(uintptr_t) * 8); bitmap = (uintptr_t *) ((uintptr_t) p & ~(ngx_pagesize - 1)); @@ -476,7 +476,7 @@ n = 1; } - if (bitmap[0] & ~((1 << n) - 1)) { + if (bitmap[0] & ~(((uintptr_t) 1 << n) - 1)) { goto done; } @@ -497,7 +497,8 @@ case NGX_SLAB_EXACT: - m = 1 << (((uintptr_t) p & (ngx_pagesize - 1)) >> ngx_slab_exact_shift); + m = (uintptr_t) 1 << + (((uintptr_t) p & (ngx_pagesize - 1)) >> ngx_slab_exact_shift); size = ngx_slab_exact_size; if ((uintptr_t) p & (size - 1)) { @@ -539,8 +540,8 @@ goto wrong_chunk; } - m = 1 << ((((uintptr_t) p & (ngx_pagesize - 1)) >> shift) - + NGX_SLAB_MAP_SHIFT); + m = (uintptr_t) 1 << ((((uintptr_t) p & (ngx_pagesize - 1)) >> shift) + + NGX_SLAB_MAP_SHIFT); if (slab & m) {