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
+++ b/src/core/ngx_slab.c
@@ -128,7 +128,7 @@ ngx_slab_init(ngx_slab_pool_t *pool)
     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 @@ ngx_slab_alloc_locked(ngx_slab_pool_t *p
 
             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 @@ ngx_slab_free_locked(ngx_slab_pool_t *po
         }
 
         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 @@ ngx_slab_free_locked(ngx_slab_pool_t *po
                 n = 1;
             }
 
-            if (bitmap[0] & ~((1 << n) - 1)) {
+            if (bitmap[0] & ~(((uintptr_t) 1 << n) - 1)) {
                 goto done;
             }
 
@@ -497,7 +497,8 @@ ngx_slab_free_locked(ngx_slab_pool_t *po
 
     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 @@ ngx_slab_free_locked(ngx_slab_pool_t *po
             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) {